【问题标题】:OpenCV not detecting QR code in the imageOpenCV 未检测到图像中的二维码
【发布时间】:2023-01-05 02:03:55
【问题描述】:

我一直在尝试通过手机从捕获的图像中检测和解码二维码。我在解码 picture a 时遇到了麻烦,因为脚本无法检测到这里有 QR 码。但是,如果我像 picture c 那样只裁剪 QR 码,脚本就能够解码代码。我需要在脚本中进行哪些修改才能使其在图 a 中运行?`

import cv2
from pyzbar.pyzbar import decode
from pyzbar.pyzbar import ZBarSymbol

image_path = "Test_Image.png"


img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
blur = cv2.GaussianBlur(img, (5, 5), 0) 
ret, bw_im = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)

code = decode(bw_im, symbols=[ZBarSymbol.QRCODE])
print (code)

for barcode in decode (bw_im, symbols=[ZBarSymbol.QRCODE]):
    print (barcode.data) 
    print (barcode.rect)
    myData = barcode.data.decode ('utf-8')
    print (myData)
    break

【问题讨论】:

  • 在您的图像中,QR 码是否始终位于图像的中心?
  • 并不真地。在某些情况下,位置也不同。

标签: python opencv qr-code


【解决方案1】:

这可能应该重命名为“Pyzbar not detecting QR code in the image”,因为您只是使用 OpenCV 加载图像/图像处理。

无论如何,我遇到了与您类似的问题,我认为限制是 opencv 和 pyzbar 的性能越差,QR 码相对于整个图像越小。

在我的例子中,我已经在带有二维码的对象周围设置了一些边界框,所以我只在边界框内搜索,较小的搜索区域改进了检测/解码。

根据您的效率要求,您可以尝试进行更粗略的搜索,找到图像中的特定形状或具有特定颜色的对象,然后在这些感兴趣的区域中使用 QR 搜索。如果您需要进行实时处理或保持较低的计算开销,那么这可能不可行。

您也可以只对图像应用一些默认裁剪,如果您的 QR 码要四处移动,这将不会非常稳健,但会减少搜索区域并改进检测/解码。

【讨论】:

    猜你喜欢
    • 2016-02-14
    • 2023-04-09
    • 1970-01-01
    • 2015-06-04
    • 2020-06-07
    • 1970-01-01
    • 2020-05-27
    • 2021-10-09
    相关资源
    最近更新 更多