Pythonライブラリ | OpenCVでカメラから画像/動画を取得する

Pythonライブラリ | OpenCVでカメラから画像/動画を取得する

今回はOpenCVライブラリのうち、「カメラ」から画像を取得する方法を検証します。

基本:カメラから画像を取得する

以下がコードになります。実行したタイミングで、特定のカメラから画像を取得します。

import cv2

try:
    # 1)カメラIDを設定
    camera = cv2.VideoCapture(0)
    
    # 2)設定したカメラから画像を取得
    ret, img = camera.read()

    # 3)画像を表示する / 引数=(Window名,表示したい画像)
    cv2.imshow('Camera',img)

    # 4)キーイベントの待機 / 引数=0 で何か入力されるまで待つ
    cv2.waitKey(0)

    # 5)入力されたら、ウィンドウを閉じる
    cv2.destroyAllWindows()
    
    # 6)カメラのメモリを解放する
    camera.release()

# except) Error時
except FileNotFoundError as e:
    print(e)

基本:カメラから動画を取得する

こちらは while文で画像取得を繰り返しています。

import cv2

try:
    # 1)カメラIDを設定
    camera = cv2.VideoCapture(0)

    # 2)繰り返し画像を取得する
    while True:

        # 3)設定したカメラから画像を取得
        ret, img = camera.read()

        # 4)画像を表示する / 引数=(Window名,表示したい画像)
        cv2.imshow('Camera',img)
        
        # 5)Escが入力されたらループ処理を終了する
        key = cv2.waitKey(10)
        if key == 27:
            break

    # 6)入力されたら、ウィンドウを閉じる
    cv2.destroyAllWindows()

    # 7)カメラのメモリを解放する
    camera.release()

# except) Error時
except FileNotFoundError as e:
    print(e)

応用:任意のタイミングでシャッターを押す

キーイベントで何か入力したタイミングでシャッターが押されるように改造します。

今回は「Space」キーを押下したときに、シャッターを切ります。

import cv2
import winsound

try:
    # 1)カメラIDを設定
    camera = cv2.VideoCapture(0)

    # 2)繰り返し画像を取得する
    while True:

        # 3)設定したカメラから画像を取得
        ret, img = camera.read()

        # 4)画像を表示する / 引数=(Window名,表示したい画像)
        cv2.imshow('Camera',img)
        
        # 5)キー入力
        #   Space(32) : シャッターを切る
        #   Esc(27) : 処理終了
        key = cv2.waitKey(10)
        if key == 32: #space
            winsound.Beep(2000, 200)
            cv2.waitKey(0)
            break
            
        elif key == 27:
            break

    # 6)入力されたら、ウィンドウを閉じる
    cv2.destroyAllWindows()

    # 7)カメラのメモリを解放する
    camera.release()
    
# except) Error時
except FileNotFoundError as e:
    print(e)

キー入力の部分(5の部分)を改造しました。

Spaceを入力した際は、cs2.waitKey(0)としてキー入力を受け付けるまでは処理を停止しています。

今回は以上です!ではまた!