我有两个Python3文件
#1 口罩识别(深度学习)
#2 QR码扫描(机器学习)
我使用的是Raspberry Pi 3 B+ 和8百万像素的单摄像头
这两个程序之间没有任何连接,但我需要同时运行这两个程序来检测某人是否戴口罩并扫描用户的QR码
问题是我发现树莓派摄像头存在冲突,因为我只用一个摄像头来运行两个不同的程序。此外,口罩识别使用的是视频流,而QR码扫描使用的是视频捕捉。
希望有人能帮助我解决使用两个Python3文件时树莓派摄像头的冲突问题。
以下是我的代码:
#1 基于Github的口罩识别
#2 QR码扫描器
import cv2import refrom time import timeimport datetimeimport boardcap = cv2.VideoCapture(0)detector = cv2.QRCodeDetector()def sw1Pressed(): global sw1Press sw1Press = Truesw1.when_pressed = sw1Pressedsw1Press = Falseprint("Press SW1 to scan.")while True: if sw1Press == True: led.toggle() _, img = cap.read() data, bbox, _ = detector.detectAndDecode(img) if bbox is not None: for i in range(len(bbox)): cv2.line(img, tuple(bbox[i][0]), tuple(bbox[(i+1) % len(bbox)][0]), color=(255, 0, 0), thickness=2) cv2.putText(img, data, (int(bbox[0][0][0]), int(bbox[0][0][1]) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) if data: sw1Press = False data = data.split(",") print("ID: " + data[0]) print("NAME: " + data[1]) print() userScanned = False with open('XXX.csv') as csvfile: reader = csv.DictReader(csvfile) for row in reader: if row["ID"] == data[0]: buzzer.beep(0.1, 0.1, 1) userScanned = True if userScanned == False: buzzer.beep(0.1, 0.1, 2) with open('XXX.csv', 'a') as csvfile: fieldNames = ['ID', 'NAME'] writer = csv.DictWriter(csvfile, fieldnames=fieldNames) writer.writerow({'ID': data[0], 'NAME': data[1]}) currentTime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') print("Date & Time: {}".format(currentTime)) print() data = { 'ID' : data[0], 'NAME' : data[1], 'TIME' : currentTime, } cv2.imshow("code detector", img) else: cap.read() cv2.destroyAllWindows() if cv2.waitKey(1) == ord("q"): breakled.off()cap.release()cv2.destroyAllWindows()
回答:
运行一个程序(或线程),它持续读取摄像头并将图片存储在两个客户端(口罩和QR码)可以读取的地方。
在实际操作中,这可以是: