潔く銀のメモ的備忘録

ガジェットとプログラムとか私的なメモを残してます。

python3でwebカメラを使うテンプレート

 

こんにちは、潔く銀です。

 

 

今回は、pythonを用いてのウェブカメラから画像を取得するというコードのテンプレートをここに載せておきたいと思います。

新しくコードを書くときなど、過去のコードを探してテンプレート引っ張ってくるのが面倒なので、ここに書いておけばコピペで使えるという理由で載せておきます。

 

作成した環境を一応参考までに載せておきます。

 

作成環境

 

ソースコード

import cv2

##############  Camera capture ################################
cap = cv2.VideoCapture(0)
cols = 1920
rows = 1080
framerate = 30



cap.set(cv2.CAP_PROP_FPS, framerate)      #カメラFPSを60FPSに設定
cap.set(cv2.CAP_PROP_FRAME_WIDTH, cols)   #カメラ画像の横幅を1920設定
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, rows)  #カメラ画像の縦幅を1080に設定


print (cap.get(cv2.CAP_PROP_FPS))
print (cap.get(cv2.CAP_PROP_FRAME_WIDTH))
print (cap.get(cv2.CAP_PROP_FRAME_HEIGHT))


while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()


    cv2.namedWindow("frame", cv2.WINDOW_KEEPRATIO | cv2.WINDOW_NORMAL)
    cv2.imshow('frame',frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break


    cv2.imshow("result", frame)



# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

 

Webカメラが認識しない場合は、cv2.VideoCaptureのデバイスidが違うので1とかに変更しないといけない可能性があります。

cols, rowsでフレームの大きさを決めることができるので、使用したい解像度をこのパラメータを調整することで決めることができます。

 

もう少し簡素化したコードは以下になります。

 

import cv2

def capture_camera():
    """Capture video from camera"""
    # カメラをキャプチャする
    cap = cv2.VideoCapture(0) # 0はカメラのデバイス番号

    while True:
        # retは画像を取得成功フラグ
        ret, frame = cap.read()

        # フレームを表示する
        cv2.imshow('camera capture', frame)

        k = cv2.waitKey(1) # 1msec待つ
        if k == 27: # ESCキーで終了
            break

    # キャプチャを解放する
    cap.release()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    capture_camera()

 

一応、僕が画像処理をし始めた時に作成したコードになりますので、他人が見ると微妙かもしれませんが、とりあえず動作させたいという時は役に立つのでメモ程度に残しておきます。