使用OpenCV和多线程处理多个摄像头

2024-10-06 11:20:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试建立一个神经网络来同时在多个摄像头上工作(或者至少……)。首先,我尝试使用OpenCV和python线程模块同时对2个摄像头进行流式处理。在

我想出了这个密码:

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())中,它会打印生成框架的mats,因此框架从multistream函数正确返回到主线程。正确的解决方法是什么?在


Tags: import框架streamqueuecv2frame摄像头threading