如何记录python-opencv扫描到的每一个二维码的信息
比如:
x3DCZybRW6c
15
50
41
这四个字符串在扫描时会不断出现,如何把他们记录下来而不重复
https://blog.csdn.net/weixin_45694843/article/details/128046847
不知道你这个问题是否已经解决, 如果还没有解决的话:pip install opencv_python-4.6.0.66-cp37-abi3-macosx_11_0_arm64.whl
针对这个问题,可以通过创建一个字典来记录每个扫描到的二维码信息,并使用二维码信息作为键来进行判断是否重复记录。具体步骤如下:
qrcode_dict = {}
# 假设扫描到的二维码信息为qr_code
if qr_code not in qrcode_dict:
qrcode_dict[qr_code] = 1
else:
qrcode_dict[qr_code] += 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库进行二维码解码。另外,该代码只实现了将未重复的二维码信息记录到字典中,如果需要将不同的二维码信息分别记录次数,可以根据具体需求进行更改。