ディープラーニングでは学習に多くのデータを集める必要があります。
CNNで学習用のデータを集める場合にも多くの画像の収集や加工を行います。

参考のためPythonで自作した画像関連ツールの一部を公開します。
ここで紹介するプログラムは一般のアプリケーションではなく参考のためのソースプログラムです。
ある程度の動作確認をしていますが動作の保証等はありません。
必要に応じて今後の学習用データ集めとデータ加工の参考にご利用ください。
 
 
(1)動画から画像を取り出すツール

1.概要
CNNで学習用のデータを集める場合に動画から画像を切り出して必要な部分を取り出し加工することがあります。
このツールは動画ファイルを閲覧して必要な部分を切り出して画像ファイルとして保存するツールです。オプションとして画像のサイズや解像度の調整機能をつけてます。

【動作確認環境】
Windows 10, Python 3.11.0, OpenCV 4.6.0
Ubuntu 20.04, Python 3.8.8, OpenCV 4.5.5
 
 
2.ダウンロード
動画から画像を取り出すツール(Zipファイル)

videotopic.zip

3.起動方法

【windows】
バッチファイルで起動
videotopic.bat

【Ubuntu】
ターミナルから起動シェルで実行
./videotopic.sh

または、Ubuntu の desktop ファイルを編集してデスクトップから起動する方法などがあります。詳しくは同梱のreadme.txtをご覧ください。
 
 
4.操作方法概要

①起動するとメインウィンドウが開きます。「ファイル選択」ボタンを押して動画を選択してください。
menu01

②動画ファイルを選択するウィンドウが開きます。動画ファイルを選択してください。
③動画ファイルを選択した後、画像の書き込み先フォルダ選択ウィンドウが開きます。選択されたフォルダに動画ファイル名のフォルダを作成して書き込みます。
④画像のファイル名は'{ファイル名}_{フレーム番号}_{オプション番号}_{連番}.jpg’となります。
⑤選択されたら動画ウィンドウが開きます。

windowvideo10

⑥動画ウィンドウでは画面中央をクリックすると閲覧できます。
⑦画面下部のスライドバーで移動できます。>>、<<は、動画を1秒程度の読み飛ばしと巻き戻しです。
⑧右上の〇印をクリックすると書き込みが開始されます。再度押すと実行中止します。
⑨ファイル書き込み実行中は〇印などがグレーになり、ターミナル(またはMS-DOSウィンドウ)に書き込みファイル名が表示されます。
書き込み中に中止の場合はESCボタンを押してください。
⑩ウィンドウの終了は「×」ボタンが「ESC」を押してください。
 
 
メインウィンドウのオプション
①読み飛ばしフレーム数
0にすると全てのフレーム(コマ)を書き込み対象とします。途中のフレームを飛ばしたい場合には数値を入力します。
②正方形に切り出し
CNNの入力画像を正方形にしたい場合に使用します。画像内を左寄せ、中央、右寄せの三種類で追加で出力します。
③正方形内に配置
CNNの入力画像を正方形にしたい場合に使用します。元画像が中央に配置された画像を追加で出力します。
④サイズ調整
CNNの入力サイズ合わせて調整します。入力は16~4096とします。
⑤拡大縮小
画像を段階的に拡大または縮小する場合に使用します。
縮小の場合は背景はランダムノイズになります。拡大の場合は画像サイズを超えた部分は切り捨てられます。
最小比率(%)と最大比率(%)の範囲で10段階で出力します。

実行結果
moviewindow01

resultpic05

以上です。

(2023/06/03 Shin Onda)