この記事では、Windows PCでPythonとOpenCVライブラリを使ってウェブカメラの映像を表示する方法を、初心者の方にもわかりやすく解説します。OpenCVは画像処理やコンピュータビジョンに特化した強力なライブラリで、カメラからの映像を扱うのに最適です。この記事を読めば、わずか数行のコードで簡単にカメラ映像を表示できるようになります。
 pip install opencv-pythonセキュリティソフトがカメラへのアクセスをブロックしている可能性があります。プログラムを実行する前に、セキュリティソフトの設定でカメラへのアクセスを許可してください。
※私はこれに気が付かずずいぶんハマりました。
 アクセス件がないと、以下のような警告が無限にでます。
 最後の”-2147024891 ”がアクセス件がないというエラーに該当します。
 
[ WARN:0@18.696] global cap_msmf.cpp:1769 CvCapture_MSMF::grabFrame videoio(MSMF): can't grab frame. Error: -2147024891プログラムは大きく分けて2つのブロックに分かれています。
1. カメラデバイスのチェック:
2. カメラのフレーム読み込みと出力:
import cv2
import time
def main():
  
    # 利用可能なデバイスを格納するリスト
    devices = []
    
    # 利用可能なデバイスを捜索
    for i in range(10):  
        cap = cv2.VideoCapture(i)
        # デバイスが存在し、開かれた場合
        if cap.isOpened():
           
            width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
            height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
            fps = cap.get(cv2.CAP_PROP_FPS)
            autofocus = cap.get(cv2.CAP_PROP_AUTOFOCUS)
            focus = cap.get(cv2.CAP_PROP_FOCUS)
            autoexposure = cap.get(cv2.CAP_PROP_AUTO_EXPOSURE)
            exposure = cap.get(cv2.CAP_PROP_EXPOSURE)
            iso_speed = cap.get(cv2.CAP_PROP_ISO_SPEED)
            # 情報を表示
            print(f"解像度: {width}x{height}")
            print(f"フレームレート: {fps}")
            print(f"オートフォーカス: {autofocus}")
            print(f"フォーカス値: {focus}")
            print(f"オート露出: {autoexposure}")
            print(f"露出値: {exposure}")
            print(f"ISO感度: {iso_speed}")
            cv2.waitKey(0)
            cap.release()
            
             # デバイスをリストに追加
            devices.append({
                "index": i,
                "width": width,
                "height": height,
                "fps": fps,
                # ... (その他のプロパティ)
            })
        else:
            pass
        
    cv2.destroyAllWindows()
    
    # スリープ処理を追加してデバイス解放を待つ
    time.sleep(1)  # 1秒間待つ
    
    # デバイスのリストを表示
    print("\n利用可能なデバイス:")
    for i, device in enumerate(devices):
        print(f"{i+1}. デバイス {device['index']}: 解像度 {device['width']}x{device['height']}, フレームレート {device['fps']}")
    # ユーザーにデバイスを選択させる
    choice = int(input("使用するデバイスを選択してください: ")) - 1
    if 0 <= choice < len(devices):
        # 選択されたデバイスのインデックスを取得
        selected_index = devices[choice]["index"]
    cap = cv2.VideoCapture(selected_index)
    
    while(True):
        ret, frame = cap.read()
        if ret == True:
            # フレームを表示
            cv2.imshow('Camera Feed', frame)
        # 'q'キーが押されたらループを終了
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    cap.release()
    cv2.destroyAllWindows()
    
if __name__ == '__main__':
    main()この記事では、Windows PCでPythonとOpenCVを使ってウェブカメラの映像を表示する方法を解説しました。これで、あなたは自分のウェブカメラから映像を取得し、表示するプログラムを作成することができるようになりました。このプログラムは、OpenCVを使ってコンピュータビジョンアプリケーション開発を始めるための素晴らしい第一歩となります。
この記事が、あなたにとって役立つ情報になれば幸いです。
さらに深く学びたい方は、以下の関連情報もご参照ください。
ぜひ、この記事の内容を参考にして、あなた自身のカメラ映像処理プログラムを作ってみましょう!
Pythonの学習には、こちらを参考にしてみてください