未能检测到所有平行窄矩形 [opencv]

问题描述

  • 我正在努力检测条形码中的各个线条/矩形。它们的宽度不同,但高度相同(条形码本身的高度)。

  • 我遇到的问题是,尽管矩形看起来相同并且彼此平行,但我无法设法检测到它们,除非更改我正在扫描的图像以使最窄的矩形变宽。有什么建议吗?

  • 我尝试了几种不同的设置,但这是我目前的设置:

    blur = cv2.pyrMeanShiftFiltering(image,11,21)
    gray = cv2.cvtColor(blur,cv2.COLOR_BGR2GRAY)
    thresh = cv2.threshold(gray,255,cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
    cnts = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
    
    cnts = cnts[0] if len(cnts) == 2 else cnts[1]
    for c in cnts:
        area = cv2.contourArea(c)
        perimeter = cv2.arcLength(c,True)
        approx = cv2.approxpolyDP(c,0.001 * perimeter,True)
        if len(approx) == 4:
            x,y,w,h = cv2.boundingRect(approx)
            x = cv2.rectangle(image,(x,y),(x+w,y+h),(36,250,12),1)

这是生成的图像(剪切以删除包含的信息)我试图检测条形码的所有外条。

resulting pdf417 image

Base Image

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)