在Opencv中使用线程运行多台摄像机

时间:2019-07-27 05:57:13

标签: python opencv face-recognition

我正在尝试使用线程流从多台摄像机流式传输视频。但是,我看到只有第一个摄像头正在启动,而第二个摄像头正卡在isOpened()函数中。可以帮助我我在哪里做错了:

import cv2
import threading

class camThread(threading.Thread):
    def __init__(self, previewName, camID):

        threading.Thread.__init__(self)
        self.previewName = previewName
        self.camID = camID

    def run(self):

        print( "Starting " + self.previewName)
        camPreview(self.previewName, self.camID)

def camPreview(previewName, camID):
    cv2.namedWindow(previewName)
    cam = cv2.VideoCapture(camID)
    if cam.isOpened():  # try to get the first frame

        rval, frame = cam.read()
        print (camID,rval)

    else:

        rval = False
    while rval:

        cv2.imshow(previewName, frame)
        rval, frame = cam.read()
        key = cv2.waitKey(20)
        if key == 27:  

            break
    cv2.destroyWindow(previewName)

# Create two threads as follows

thread1 = camThread("Camera 1", 0)
thread2 = camThread("Camera 2", 1)

thread1.start()
thread2.start()

threads = []
threads.append(thread1)
threads.append(thread2)

for t in threads:
    t.join()

0 个答案:

没有答案