こんにちは、潔く銀です。
今回は、pythonを用いてのウェブカメラから画像を取得するというコードのテンプレートをここに載せておきたいと思います。
新しくコードを書くときなど、過去のコードを探してテンプレート引っ張ってくるのが面倒なので、ここに書いておけばコピペで使えるという理由で載せておきます。
作成した環境を一応参考までに載せておきます。
作成環境
- Macbook Air 2013mid
- Anaconda
- Python 3.6
- Opencv3.4.3
ソースコード
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()
一応、僕が画像処理をし始めた時に作成したコードになりますので、他人が見ると微妙かもしれませんが、とりあえず動作させたいという時は役に立つのでメモ程度に残しておきます。