はじめに
キャプチャボードからの入力映像を定期的に画像として保存するスクリプトです。
ゲーム映像(Nitendo Switch)のスクショを定期的に取得したかったので作成しました。
環境
- Windows 10
- Python 3.7
- GC550 PLUS(キャプチャボード)
スクリプト概要
-
OpenCVでキャプチャボードからの映像を取得
-
1秒おきにキャプチャ画像を取得
-> キャプチャしたい動画のfpsは 60なので、 count
が60の倍数のときに画像を保存
- 取得したフレームをHDサイズにリサイズして保存
-> 今回のケース(Siwtch)はFull HDで映像が出力されますが、HDのキャプチャ画像が欲しかったため
スクリプト概要
capture.py
import cv2
import datetime
# VideoCapture オブジェクトを取得
# キャプボの他にWebカメラなど接続している場合は他の数字を指定する必要があるかも
capture = cv2.VideoCapture(0)
print(capture.isOpened())
capture.set(3, 1920)
capture.set(4, 1080)
count = 0
while(True):
ret, frame = capture.read()
cv2.imshow('frame', frame)
count += 1
print(count)
if count % 60 == 0:
dt_now = datetime.datetime.now()
# 1280 * 720のキャプチャ画像に変換、保存
resized = cv2.resize(frame, (1280, 720))
# 所定のフォルダにjpgで保存
cv2.imwrite('H:/capture/'+ dt_now.strftime('%Y%m%d-%H%M%S')+'.jpg', resized)
# "q"キー または ctrl + C でキャプチャ停止
if cv2.waitKey(1) & 0xFF == ord('q'):
break
capture.release()
cv2.destroyAllWindows()