работа с несколькими камерами с помощью OpenCV и многопоточности - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь настроить нейронную сеть для работы на нескольких камерах одновременно (или почти по крайней мере ...).Прежде всего, я пытаюсь получить потоковую передачу 2 камер одновременно с OpenCV и модулем потоков Python.

Я придумал этот код:

import cv2
import threading
import queue

def multistream(stream, q):
    ret, frame = stream.read()
    q.put(frame)

if __name__ == "__main__":
   camlink1 = "rtsp://......link1"
   camlink2 = "rtsp://......link2"
   stream1 = cv2.VideoCapture(camlink1)
   stream2 = cv2.VideoCapture(camlink2)
   print("stream is opened")
   while True:
      q = queue.Queue()
      cam1 = threading.Thread(target=multistream, args=(stream1, q))
      cam2 = threading.Thread(target=multistream, args=(stream2, q))
      cam1.start()
      cam2.start()
      cam1.join()
      cam2.join()
      while not q.empty():
          cv2.imshow("video", q.get())

Проблема в том, что cv2.imshow показывает пустое окно вместо фрейма, если я добавлю к коду print(q.get()), он печатает маты, из которых сделан кадр, поэтому кадр корректно возвращается из многопотоковой функции в основной поток.Как исправить это?

...