yolov3_video_subject1.cpp構造 - takgto/utokyo-chipathon2023 GitHub Wiki
~/Vitis-AI/examples/VART/yolov3/yolov3_video_subject1.cpp
の説明です。
ソースコードと見比べてください。
main関数
以下の行から始まる関数です。まずこの関数が動作して他の関数を呼び出します。
ベタ打ちで動画を読み出しています。
VideoCapture video
に動画をキャプチャしています。
frame
にYOLOV3処理後の画像が入ります。変数imshow
で画像を表示しています。
変数
start_time
に処理開始前の時刻を格納していて、変数show_time
に画像表示後の時刻を格納しています。
show_time - start_time
が処理時間です。
chrono::system_clock::now()
で時刻を取得できます。例として、以下の行で処理開始前の時刻をstart_time
に格納しています。
コメントアウトされていますが各処理時刻を格納する変数があるので、コメントアウトを外すとそれぞれの処理にかかる時間が測れます。
以下の行がコメントアウトの行です。//
を行の最初に書くとその行がコメントアウトされてプログラムとして動作しません。
//
を削除すると動作するようになります。VSCodeではコメントアウトの行は緑色になります。
cout
を使うとコンソールに値や文字を表示できます。以下のように記述します。
関数runYOLO
以下の行から始まる関数です。この関数内でYOLOV3を処理しています。
setInputImageForYOLO
を呼び出します。
この関数で画像をリサイズしています。
post_process
を呼び出します。
この関数で物体検出と検出ボックスの描画をしています。
物体検出は以下のコードで行っています。detect関数で物体検出して
boxes
に格納しています。
検出ボックスを元の画像に上書きして描画します。
.
.
以下の関数は使用されていませんが、yolov3_video_study.cpp
にあって、main
関数に組み込めば使うことができます。
関数readFrame
動画を読み出す関数です。
fileName
のファイルを読み出してフレームの画像をout
に出力します。
関数displayFrame
動画を表示する関数です。
in
に渡された画像を表示します。imshow
が表示するコマンドです。