今回はさらにxキーで動画撮影開始・停止を行います。
プログラムはこのようになりました。
from datetime import datetime
import cv2, os
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
def main():
if cap == None:
return False
out = None
capture = False
while cap.isOpened():
# カメラから映像を読み込む
_, img = cap.read()
cv2.imshow("preview", img)
if capture:
if out != None:
out.write(img)
key = cv2.waitKey(1)
if key == ord('z'):
cv2.imwrite("test.png", img)
if key == ord('x'):
if not capture:
capture = True
out = cv2.VideoWriter('test.avi',fourcc, 20.0, (640,480))
else:
capture = False
out.release()
out = None
elif key < 255:
break
# 事後処理
cap.release()
if out != None:
out.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
main()
今回は新しくVideoWriter_fourcc()というのが出てきました。
引数の文字列は動画コーデックを示しているみたいです。
よく分からんけど。
まぁ、結局はこのコードをコピペして使うんだー
※ちなみに、プログラムをブログに書いたり、gitHubにあげているのは、就職して職場内に行ったとしてもコピペして使えるようにするためです。
VideoWriter()をつかって動画に保存するためのオブジェクトを作成します。
引数は、動画ファイル名、上のfourCC、フレームレート(fps)、解像度です。
オブジェクトを作成したら、フレームデータをこのオブジェクトにwrite()で書き込むだけです。
今回はxキーで録画開始・停止を行うので、xキーオンオフでオブジェクトを作成・解放を操作しています。
次回はいよいよリモートやってみようかな