使用python检测(并可能解码)PDF417条形码

xienkqul  于 2023-09-29  发布在  Python
关注(0)|答案(2)|浏览(224)

我正在尝试使用python从图像中检测pdf 417条形码(2D条形码)。
我将收到的身份证的图像,其中有一个条形码,但它可能并不总是直的。所以我正在寻找一种有效的方法来检测使用Python的pdf 417条形码。
我尝试了我能找到的所有可用方法(使用Python),例如,

  • pdf417decoder:要求图像精确地围绕条形码切割,如下图所示:

  • pyzbar:仅检测1D条形码

  • python-zxingzxing:我没有检测到任何我尝试过的pdf 417条形码(大约10个不同的ID-不同的国家)

  • Barcode-detection:这是一种使用YOLO-V3检测条形码的DL方法,但再次(在尝试之后),它只能检测1D条形码...

是不是有什么方法我错过了?我对这个问题使用了错误的方法吗?

  • 我正在考虑的可能解决方案:使用计算机视觉(一些过滤器和变换)来检测一个有黑色和白色圆点的盒子。类似于this

谢谢你,谢谢

slwdgvem

slwdgvem1#

经过多次试验,我最终使用了OpenCV的template matching方法。你需要精确地选择你的模板图像,这将是你的算法的搜索参考。你需要输入一些灰度图像。然后,您需要选择结果高于某个阈值(对我来说为0.55)的框。然后应用NMS (non max suppression)过滤掉噪声框。
但请记住,有许多边缘情况要遇到。如果有人有兴趣看到完整的解决方案,请让我知道。

i86rm4rw

i86rm4rw2#

import cv2
import zxingcpp
c=cv2.VideoCapture(0)
while 1:
    f=c.read()[1]
    s=zxingcpp.read_barcodes(f)
    for r in s:
        print(r.text)
    cv2.imshow('',f)
    if cv2.waitKey(1) & 0xFF==ord('q'):
        break
c.release()
cv2.destroyAllWindows()

你需要pip安装zxing-cpp,然后运行上述代码扫描任何类型的条形码,你需要从你的摄像头。如果要输入静态图像,可以参考https://pypi.org/project/zxing-cpp/

相关问题