OpenCVを入れたのでちょっとWebカメラで遊んでみるというタイトル通りの内容です。
基本的には参考にした内容ほぼ丸パクリです。
1:OpenCVでWebカメラの画像を取得する
以下の記述でできます。
import cv2 # OpenCV のインポート # VideoCaptureのインスタンスを作成(引数の番号でカメラを選択できる) cap = cv2.VideoCapture(0) # VideoCaptureから1フレーム読み込む ret, frame = cap.read() # 戻り値のframeが画像
「cap = cv2.VideoCapture(0)」で接続しているWebカメラのインスタンスを作成しています。ノートPCなどに内臓されているカメラの場合は、引数に「0」を指定してあげれば良いです。
「ret, frame = cap.read()」でカメラの画像を1フレーム読み込みます。この戻り値のframeが読み込んだ画像になります。
2:サンプルコード
1の内容でWebカメラの画像が取得できました。これを応用してカメラの画像に現在時刻を表示させるサンプルを作りました。
そのサンプルが以下になります。
from datetime import datetime # 時刻関係のライブラリ import cv2 # OpenCV のインポート # VideoCaptureのインスタンスを作成(引数でカメラを選択できる) cap = cv2.VideoCapture(0) while True: # VideoCaptureから1フレーム読み込む ret, frame = cap.read() # 戻り値のframeがimg # 1/4にリサイズ frame = cv2.resize(frame, (int(frame.shape[1]/4), int(frame.shape[0]/4))) # 加工なし画像を表示する # cv2.imshow('Raw Frame', frame) # 現在時刻の文字列を画像に追加 date = datetime.now().strftime("%H:%M.%S") edframe = frame cv2.putText(edframe, date, (0,30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255,0), 3, cv2.LINE_AA) # 加工した画像を表示 cv2.imshow('Edited Frame', edframe) # キー入力を1ms待って、keyが「q」だったらbreak key = cv2.waitKey(1)&0xff if key == ord('q'): break # キャプチャをリリースして、ウィンドウをすべて閉じる cap.release() cv2.destroyAllWindows()
このサンプルを実行すると、Webカメラの元画像を1/4した大きさのものに現在時刻が左上に表示されます。
終了させる時は「q」キーを押すと終了します。
以上がWebカメラの画像を取得する方法です。割と簡単に実装できたのでOpenCVを使ってもっと色々なことをやっていきたいです。
・参考資料