#はじめに
pythonでopencvを扱う際に動画ファイルの取り扱いと引数の役割を忘れそうになるのでメモ
今回は非常にシンプルな動画出力を記述。
#実行環境
OS: Windous10
python 3.7.2
opencv-python 4.2
#動画の抽出サンプルコード
import cv2
capture = cv2.VideoCapture("動画ファイルパス")
while True:
retval, image = capture.read()
cv2.imshow("表示ウインド名称", image)
if waitKey(10) == 27:
break
cv2.destroyAllWindows()
capture.released()
retval
は真偽値を返す(imageのデータが存在しなくなったときにFalseを返します)
image
は画像データのndarray配列を返します。1ループ目では1フレーム目の配列というようにループ番号に対応したフレームの配列を返します。
#各種引数について
cv2.VideoCapture()
動画を指定して取り込みます。第1引数はファイルパスで第2引数はビデオ処理メカニズムの指定でデフォルトはcv2.CAP_ANYです。
cv2.VideoCapture.read()
引数なし。動画データの1フレームを読み込みます。戻り値はタプルで画像配列と画像配列の有無を表す真偽値を返します。
cv2.imshow()
与えられた画像配列を指定したウィンドで表示する。第1引数には表示するウィンドの名前,第2引数には表示する画像の配列を指定。
waitKey()
ここで特筆する内容ではないが引数で待ち時間を設定できる。(単位は(msec)である。)
==27の記述はASCIIコードで指定されており27はEscキーに当たる。つまりEscキーを押下すると分岐に入りループを抜ける。
cv2.destroyAllWindows()
引数なし。すべてのウィンドを閉じます。
#参照
OpenCV公式
https://docs.opencv.org/4.5.2/d8/dfe/classcv_1_1VideoCapture.html