Capturing video from two cameras in OpenCV at once

前端 未结 7 1183
别跟我提以往
别跟我提以往 2020-11-30 04:27

How do you capture video from two or more cameras at once (or nearly) with OpenCV, using the Python API?

I have three webcams, all capable of video streaming, locate

7条回答
  •  孤街浪徒
    2020-11-30 04:54

    Using OPENCV and two standard USB cameras, I was able to do this using multithreading. Essentially, define one function which opens an opencv window and VideoCapture element. Then, create two threads with the camera ID and window name as inputs.

    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()
        else:
            rval = False
    
        while rval:
            cv2.imshow(previewName, frame)
            rval, frame = cam.read()
            key = cv2.waitKey(20)
            if key == 27:  # exit on ESC
                break
        cv2.destroyWindow(previewName)
    
    # Create two threads as follows
    thread1 = camThread("Camera 1", 1)
    thread2 = camThread("Camera 2", 2)
    thread1.start()
    thread2.start()
    

    Great resource for learning how to thread in python: https://www.tutorialspoint.com/python/python_multithreading.htm

提交回复
热议问题