OpenCV QR码检测器给出圆圈而不是方框

5m1hhzi4  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(132)

我 对 OpenCV 和 更 高级 的 python 代码 还 处于 相当 初级 的 水平
我 正在 尝试 做 一 个 QR 码 检测 器我 在 互联 网 上 搜索 , 找到 了 一 个 代码 , 以便 开始 从中 学习 , 代码 是 错误 的 , 所以 我 试 着 , 用 我 有限 的 知识 和 线程 从 这里 , 来 修复 它 , 但 现在 的 图像 , 而 不是 一 个 框 周围 的 二维 码 图像 给 了 一 个 圆圈 与 0 ,0 坐标 作为 它 的 中心 ( 把 厚度 改为 100 而 不是 2 ) , 而 我 不能 理解 为什么 .. 下面 的 代码 :

import cv2
import numpy as np
import sys
import time

if len(sys.argv)>1:
    inputImage = cv2.imread(sys.argv[1])
else:
    inputImage = cv2.imread("path/qrcode.jpg")

# Display barcode and QR code location
def display(im, bbox):
    n = len(bbox)
    bbox = bbox.astype(int)
    for j in range(n):
        cv2.line(im, tuple(bbox[j][0]), tuple(bbox[ (j+1) % n][0]), (255,0,0), 3)

    # Display results
    cv2.imshow("Results", im)

# Create a qrCodeDetector Object
qrDecoder = cv2.QRCodeDetector()

# Detect and decode the qrcode
t = time.time()
data,bbox,rectifiedImage = qrDecoder.detectAndDecode(inputImage)
print("Time Taken for Detect and Decode : {:.3f} seconds".format(time.time() - t))
if len(data)>0:
    print("Decoded Data : {}".format(data))
    display(inputImage, bbox)
    rectifiedImage = np.uint8(rectifiedImage);
    cv2.imshow("Rectified QRCode", rectifiedImage);
else:
    print("QR Code not detected")
    cv2.imshow("Results", inputImage)

cv2.waitKey(0)
cv2.destroyAllWindows()

中 的 每 一 个

oprakyz7

oprakyz71#

问题出在你的显示功能上,你可以用cv2.rectangle

def display(im, bbox):
    bbox = bbox.astype(int)
    cv2.rectangle(im, bbox[0][0], bbox[0][2], (255, 0, 0), 2)

    # Display results
    cv2.imshow("Results", im)

相关问题