python-opencv如何记录扫到的二维码

如何记录python-opencv扫描到的每一个二维码的信息
比如:
x3DCZybRW6c
15
50
41
这四个字符串在扫描时会不断出现,如何把他们记录下来而不重复

https://blog.csdn.net/weixin_45694843/article/details/128046847

不知道你这个问题是否已经解决, 如果还没有解决的话:

1-3
1-4

pip install opencv_python-4.6.0.66-cp37-abi3-macosx_11_0_arm64.whl
  • 以下回答来自chatgpt:

    针对这个问题,可以通过创建一个字典来记录每个扫描到的二维码信息,并使用二维码信息作为键来进行判断是否重复记录。具体步骤如下:

    1. 创建一个空字典来存储扫描到的二维码信息和记录次数:
    qrcode_dict = {}
    
    1. 在每次扫描到二维码时,将信息存储到字典中,并更新对应的记录次数:
    # 假设扫描到的二维码信息为qr_code
    if qr_code not in qrcode_dict:
        qrcode_dict[qr_code] = 1
    else:
        qrcode_dict[qr_code] += 1
    
    1. 如果需要避免重复记录,可以在每次扫描前先判断二维码信息是否已经被记录过,如果已经记录过则跳过扫描的过程,否则进行扫描并记录信息:
    # 假设扫描前需要判断的二维码信息为qr_code
    if qr_code not in qrcode_dict:
        # 执行二维码扫描的代码
        # ...
        # 假设扫描到的二维码信息为qr_code_scanned
        qrcode_dict[qr_code_scanned] = 1
    else:
        print("二维码信息已被记录过,跳过扫描。")
    

    完整代码示例:

    import cv2
    from pyzbar import pyzbar
    
    qrcode_dict = {}
    
    def scan_qrcode(image):
        # 执行二维码扫描的代码
        # ...
        # 假设扫描到的二维码信息为qr_code_scanned
        return qr_code_scanned
    
    def process_frame(frame):
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        barcodes = pyzbar.decode(gray)
        for barcode in barcodes:
            # 提取二维码信息
            qr_code = barcode.data.decode("utf-8")
    
            # 判断二维码信息是否已经被记录过
            if qr_code not in qrcode_dict:
                # 执行二维码扫描的代码
                qr_code_scanned = scan_qrcode(frame)
    
                # 记录二维码信息
                qrcode_dict[qr_code_scanned] = 1
            else:
                print("二维码信息已被记录过,跳过扫描。")
    
    # 打开摄像头
    cap = cv2.VideoCapture(0)
    
    while True:
        ret, frame = cap.read()
        if not ret:
            print("Can't receive frame.")
            break
    
        # 处理每一帧
        process_frame(frame)
    
        cv2.imshow("Frame", frame)
    
        # 按下q键退出循环
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    # 释放摄像头并关闭窗口
    cap.release()
    cv2.destroyAllWindows()
    

    注意:上述代码中,二维码扫描的具体实现函数scan_qrcode()需要根据实际情况进行编写,这里使用了pyzbar库进行二维码解码。另外,该代码只实现了将未重复的二维码信息记录到字典中,如果需要将不同的二维码信息分别记录次数,可以根据具体需求进行更改。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^