Python : カメラの撮影
これはスマホのカメラのように、カメラの画像を見ながら撮影する方法です。
まずはopencvを使うため、opencvのインポートをします。
import cv2
その後、カメラやカメラサイズを決めます。
カメラのNoの設定、1つしかカメラがない場合は0
cap_no = 0
cap_0 = cv2.VideoCapture(cap_no,cv2.CAP_DSHOW)
カメラのサイズを640 x 480ピクセルに設定
cap_0.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap_0.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
カメラを移すというプロセスは
カメラの画像を取り込む→画像を表示する→次のカメラの画像を取り込む
→前の画像を上書きして表示する。
ということを繰り返すプログラムになるため、
手っ取り早くwhile文でカメラがtrue(正常につながっている状態)ならば
動き続けるようにします。
while(cap_0.isOpened()):
これで、cap_0という名前に設定したカメラの画像を読み込みます。
ret1, frame1 = cap_0.read()
何もしないのもつまらないので、画像にフレーム数でも書き込みます。
cv2.putText(frame1,str(j),(20,50), fontType, 2, (0, 0, 0), 2, cv2.LINE_AA)
フレーム数は1ずつ増えるので、1足していきます
j = j + 1
画像を表示します。
cv2.imshow('frame1',frame1)
ここまでだと止まらないプログラムになってしまうため、
止められるようにキー入力で止められるようにします。
キー入力を待つqを押したら、画像表示の中止
key = cv2.waitKey(1)
ここが終了
if key & 0x00FF == ord('q'):
break
これは次いでですが、画像の保存
elif key & 0x00FF == ord('s'):
cv2.imwrite('frame00.jpg',frame1)
最後にwhile文を抜けたとに、カメラを閉じるのと、表示したフレームを閉じます。
#カメラをリリース
cap_0.release()
#画像をすべて閉じる
cv2.destroyAllWindows()
下記がプログラムの詳細です。
import cv2
#カメラのNoの設定、1つしかカメラがない場合は0
cap_no = 0
cap_0 = cv2.VideoCapture(cap_no,cv2.CAP_DSHOW)
#カメラのサイズを640 x 480ピクセルに設定
cap_0.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap_0.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
#とりあえず画面横にフレーム数を表記
j = 0
#フレーム数を表記する文字のフォント
fontType = cv2.FONT_HERSHEY_COMPLEX
#while文にてカメラがつながっている限りは動画撮影
while(cap_0.isOpened()):
#カメラを読み込む
ret1, frame1 = cap_0.read()
#画像にフレーム数を書き込む
cv2.putText(frame1,str(j),(20,50), fontType, 2, (0, 0, 0), 2, cv2.LINE_AA)
#フレーム数の計算
j = j + 1
#画像を表示
cv2.imshow('frame1',frame1)
#キー入力を待つqを押したら、画像表示の中止
key = cv2.waitKey(1)
#終了
if key & 0x00FF == ord('q'):
break
#画像の保存
elif key & 0x00FF == ord('s'):
cv2.imwrite('frame00.jpg',frame1)
#カメラをリリース
cap_0.release()
#画像をすべて閉じる
cv2.destroyAllWindows()
今までにpythonについて書いた記事はここにリンクを貼ってあります。
興味があればぜひご覧ください。