web-dev-qa-db-ja.com

利用可能なCameras OpenCV / Python

私は私のPCに接続されている複数のウェブカメラがあり、その情報(名前、解決など)に基づいて1つのカメラを選択したいと思います。 Cv2.Videocapture()のすべてのインデックスを試すのではなく、PCで利用可能なすべてのカメラをリストする方法はありますか?

4
SEU

質問のタイトルに答えるには、whileループを使用できます。

import cv2


def list_ports():
"""
Test the ports and returns a Tuple with the available ports and the ones that are working.
"""
    is_working = True
    dev_port = 0
    working_ports = []
    available_ports = []
    while is_working:
        camera = cv2.VideoCapture(dev_port)
        if not camera.isOpened():
            is_working = False
            print("Port %s is not working." %dev_port)
        else:
            is_reading, img = camera.read()
            w = camera.get(3)
            h = camera.get(4)
            if is_reading:
                print("Port %s is working and reads images (%s x %s)" %(dev_port,h,w))
                working_ports.append(dev_port)
            else:
                print("Port %s for camera ( %s x %s) is present but does not reads." %(dev_port,h,w))
                available_ports.append(dev_port)
        dev_port +=1
    return available_ports,working_ports
 _

コードに実装するのは非常に簡単なソリューションです。

4
G M