【问题标题】:How to run two python3 file with both file using the same Raspberry Pi Camera如何使用相同的 Raspberry Pi 相机运行两个 python3 文件和两个文件
【发布时间】:2021-10-27 17:33:32
【问题描述】:

我有两个 python3 文件

#1 口罩识别(深度学习)

#2 二维码扫描器(机器学习)

我正在使用 Raspberry Pi 3 B+ 和 8 MP 单 Pi Cam

这两个程序都没有任何连接,但是我需要同时运行这两个程序来检测是否有人戴口罩并扫描用户的二维码

问题是我在 pi 相机上发现了冲突,因为我只将一个 pi 相机用于两个不同的程序。另外,使用视频流进行面罩,同时使用视频捕获进行 QR 扫描。

希望有人可以帮助我解决 pi 相机与使用它的两个 python3 文件的冲突。

下面是我的代码:

#1 基于 Github 的口罩识别

https://github.com/manish-1305/facemask_detection/blob/73f37f724b519731eec7d46cb4a23482147db24b/detect.py

#2 二维码扫描器

import cv2
import re
from time import time
import datetime
import board


cap = cv2.VideoCapture(0)
detector = cv2.QRCodeDetector()

def sw1Pressed():
    global sw1Press
    sw1Press = True

sw1.when_pressed = sw1Pressed
sw1Press = False


print("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"):
        break

led.off()
cap.release()
cv2.destroyAllWindows()

【问题讨论】:

    标签: python python-3.x machine-learning deep-learning raspberry-pi


    【解决方案1】:

    运行一个程序(或线程)连续读取相机并将图片存储在两个客户端(掩码和 QR)可以读取的位置。

    实际上可能是:

    • 一个程序有 3 个线程,一个线程从摄像头读取到共享 Numpy 数组,两个线程从该共享数组读取,或者
    • 三个程序,一个将图像读取到 Python v3.8 multiprocessing shared memory 中,两个程序附加到该共享内存以读取帧
    • 三个程序,可能在不同的机器上,一个从相机读取帧并将它们扔到Redis,另外两个从 Redis 读取帧

    【讨论】:

    • 先生,我用网络摄像头作为第二个摄像头怎么样?但我不知道如何设置程序,以便它可以在不同的任务中使用 Pi Cam 或网络摄像头。 Pi Cam = 面罩和网络摄像头 = QR 码读取
    • 如果您对第二台相机有任何疑问,请再问一个问题 - 它们是免费的 - 答案也是免费的。一定要说明它是什么相机以及它是如何连接的。
    猜你喜欢
    • 2014-02-10
    • 2015-03-17
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2018-04-14
    • 1970-01-01
    • 2015-09-27
    相关资源
    最近更新 更多