gpt4 book ai didi

python-3.x - 使用 OpenCV QRCodeDetector 读取条形码

转载 作者:太空宇宙 更新时间:2023-11-03 23:08:03 25 4
gpt4 key购买 nike

我正在尝试在 Python3 上使用 OpenCV 来创建带有 QR 码的图像并读回该代码。

这里是一些相关的代码:

def make_qr_code(self, data):
qr = qrcode.QRCode(
version=2,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=10,
border=4,
)

qr.add_data(data)
return numpy.array( qr.make_image().get_image())

# // DEBUG
img = numpy.ones([380, 380, 3]) * 255
index = self.make_qr_code('Hello StackOverflow!')
img[:index.shape[0], :index.shape[1]][index] = [0, 0, 255]
frame = img
# // DEBUG

self.show_image_in_canvas(0, frame)
frame_mono = cv.cvtColor(numpy.uint8(frame), cv.COLOR_BGR2GRAY)
self.show_image_in_canvas(1, frame_mono)

qr_detector = cv.QRCodeDetector()
data, bbox, rectifiedImage = qr_detector.detectAndDecode(frame_mono)
if len(data) > 0:
print("Decoded Data : {}".format(data))
self.show_image_in_canvas(2, rectifiedImage)
else:
print("QR Code not detected")

(调用 show_image_in_canvas 只是为了在我的 GUI 中显示图像,这样我就可以看到发生了什么)。

当目视检查 frameframe_mono 时,我觉得没问题

Left panel: <code>frame</code>, middle panel: <code>frame_mono</code>, right panel: reserved for detected QR Code

但是,二维码检测器不返回任何内容(进入其他:“未检测到二维码”)。

除了我刚刚生成的二维码之外,框架中几乎没有其他内容。我需要对 cv.QRCodeDetector 进行哪些配置,或者我需要对我的框架进行哪些额外的预处理才能使其找到二维码?

最佳答案

OP在这里;通过仔细查看生成的二维码并将其与其他来源进行比较,解决了该问题。

问题不在于检测,而在于二维码的生成。显然 qrcode.QRCode 返回的数组在网格方 block 中有 False(或者它可能是 0,我认为它是一个 bool 值) 代码的一部分,不是的正方形中的True(或非零)。

所以当我执行 img[:index.shape[0], :index.shape[1]][index] = [0, 0, 255] 时,我实际上是在创建负像二维码。

当我倒置index数组时,二维码从左边的图片变成了右边的图片,检测成功。

The faulty and correct QR code.

此外,我决定切换到 ZBar 库,因为它在不太完美的情况下(例如从网络摄像头图像)检测这些代码要好得多。

关于python-3.x - 使用 OpenCV QRCodeDetector 读取条形码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55012994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com