Не получается отдать данные в поток на Python
У меня есть 3 файла. Первый отвечает за вебкамеру и выводит изображение, так же запускает поток и записывает данные в глобальную переменную.
from threading import Thread
import cv2
from pushData import push
from data import *
def webcam():
global gFrame
cap = cv2.VideoCapture(0)
#Запуск потока
p1 = Thread(target=push, args=(getFrame,))
p1.start()
while True:
# Брать изображение с камеры
ret, frame = cap.read()
#Копирование фрейма
gFrame = frame.copy()
#Вывод картинки
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
webcam()
Есть файл просто для хранения информации
#Место для хранения
gFrame = []
def getFrame():
global gFrame
return gFrame
И вся проблема идет в потоке. Когда я пытаюсь взять данные из переменных то они пустые. То есть print(getFrame()) выводит пустой массив
import time
def push(getFrame):
while True:
print()
#Вывод фрейма
print(getFrame())
time.sleep(1)
print("===================")
Ответы (1 шт):
Автор решения: alex
→ Ссылка
from threading import Thread
import cv2
from pushData import push
from data import *
def webcam():
cap = cv2.VideoCapture(0)
#Запуск потока
p1 = Thread(target=push, args=(getFrame,))
p1.start()
while True:
# Брать изображение с камеры
ret, frame = cap.read()
#Копирование фрейма
gFrame[0] = frame.copy()
#Вывод картинки
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
webcam()
список это изменяемый тип данных. и global убери везде.
#Место для хранения
gFrame = [None]
def getFrame():
return gFrame