#python #python-3.x #machine-learning #deep-learning #raspberry-pi
Вопрос:
У меня есть два файла python3
#1 Распознавание масок для лица (Глубокое обучение)
#2 Сканер QR-кода (машинное обучение)
Я использую камеру Raspberry Pi 3 B и 8-мегапиксельную камеру с одним Pi
Обе программы не имеют никакого соединения, однако мне нужно запустить обе одновременно, чтобы обнаружить кого-то, кто маскируется или нет, и отсканировать QR-код пользователя
Проблема в том, что я обнаружил конфликт на pi-камере, потому что я использую только одну pi-камеру для двух разных программ. Кроме того, маска для лица с использованием видеопотока во время QR-сканирования с использованием видеокапсул.
Надеюсь, кто-нибудь может помочь мне в конфликте pi-камеры с двумя файлами python3, которые его используют.
Ниже приведен мой код:
#1 Распознавание масок на основе Github
#2 Сканер QR-кода
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 amp; 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()
Ответ №1:
Запустите одну программу (или поток), которая непрерывно считывает изображение с камеры и сохраняет его там, где два клиента (маска и QR) могут его прочитать.
В практическом плане это может быть:
- одна программа с 3 потоками, один поток считывает данные с камеры в общий массив Numpy и два потока считывают данные из этого общего массива, или
- три программы, одна из которых считывает изображения в многопроцессорную общую память Python v3.8 и две программы, подключенные к этой общей памяти для чтения кадров
- три программы, возможно, на разных машинах, одна считывает кадры с камеры и помещает их в Redis, а две другие считывают кадры из Redis
Комментарии:
1. Сэр, как насчет того, чтобы я использовал веб-камеру в качестве второй камеры? Но я не знаю, как настроить программу так, чтобы она могла использовать Pi Cam или веб-камеру для разных задач. Pi Cam = Маска для лица и веб-камера = Считывание QR-кода
2. Если у вас есть вопрос о второй камере, просто задайте другой вопрос — они бесплатны — ответы тоже бесплатны. Обязательно скажите, что это за камера и как она подключена.