无法使用python cv2在windows上同时从两个摄像头(通过一个集线器)捕获帧

2024-04-25 05:44:51 发布

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

当尝试同时从两个摄像头(使用一个USB集线器)捕获帧时,只有一个摄像头可以返回有效帧,另一个将不返回任何帧。当使用一个外部摄像头和笔记本电脑的内部摄像头时,它工作正常。你知道吗

同样的代码和硬件在Ubuntu系统上也能正常工作。因此,可能是Windows或其驱动程序有问题,或者使用集线器有问题(可能是带宽问题,但不是电源问题,因为集线器有外部电源)

import cv2
import numpy as np
from multiprocessing import Process
def show(camera_id):
    cap = cv2.VideoCapture(camera_id)
    cap.set(3,640)
    cap.set(4,480)
    cap.set(cv2.CAP_PROP_FPS, 30)
    while True:
        ret, frame = cap.read()
        cv2.imshow('test', frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    cap.release()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    p1 = Process(target=show, args=(0,))
    p2 = Process(target=show, args=(1,))
    p1.start()
    p2.start()

Tags: importidtargetifshow集线器cv2process