10-7 人物 EPTZ 自動フレーミング機能サンプルチュートリアル
これまでの章では、AI にさまざまな分野の認識能力を持たせるために、「モデルファイルを置き換える」方法を学びました。では、 モデルを変更したくない場合、AI には他にどのようなことができるのでしょうか?
本章では、QDEEP エンジンのもう一つの機能である EPTZ 自動フレーミング を紹介します。今回は、 10-3 の人物検出モデルをそのまま使用します 。API の設定値を一つ切り替えるだけで、内部エンジンは従来の「単純に枠を描画する」動作から、「対象の切り抜き(Crop)と部分拡大」によるクローズアップ効果を持つ、本格的な仮想ディレクターへと自動的に切り替わります。
➤ 人物検出モデルはこちらで復習できます : 10-3 人物検出機能サンプルチュートリアル
学習目標
本章では、以下を学びます。
1. 一つのモデルを多用途に活用 : モデルファイルを変更せず、QDEEP の設定列挙値を切り替えるだけで AI エンジンの動作モードを変更する。
2. OpenCV の応用テクニックを習得 : 安全な切り抜き (cv::Rect)、コピー (clone)、画像拡大 (resize).
3. OpenCV による水平結合を実装し、2 枚の異なる画像を 1 枚の超ワイドな横並び画像に合成して Qt に渡して描画する。
準備作業
「人物 EPTZ 自動フレーミング」の本質は、あくまで「人」を探すことです。そのため、システムは 10-3 で使用した人物検出モデルをそのまま利用します。プロジェクトの ビルド出力ディレクトリ を開き、10-3 で配置した QDEEP.OD.TINY.PERSON.CFG と QDEEP.OD.TINY.PERSON.WEIGHTS がまだ存在していることを確認してください。この 2 つのファイルが残っていれば、準備は完了です。
コア API はどのように変更するのか?
モデルファイルを変更しない場合、AI エンジンに EPTZ 機能を有効化することをどのように伝えればよいのでしょうか? その鍵は QDEEP_CREATE_OBJECT_DETECTの 3 番目の引数、 モデル設定タイプ (nConfigModel) にあります。
元の QDEEP_OBJECT_DETECT_CONFIG_MODEL_CUSTOMIZED_LITE を、EPTZ 専用モードである QDEEP_OBJECT_DETECT_CONFIG_MODEL_HUMAN_EPTZ_AUTO_FRAMING に置き換えてください。この引数を変更するだけで、内部エンジンのロジックは自動フレーミングモードへ自動的に切り替わります。
QDEEP_CREATE_OBJECT_DETECT
これは AI エンジンを作成し、モデルを読み込むための最も重要な API です。ユーザーはこの API を使用して検出器を初期化する必要があります。
QDEEP_OBJECT_DETECT_BOUNDING_BOX 構造体


コアコードの作成
プロジェクトを開き、今回の最も見どころとなる「画像処理の大改造」を一緒に進めましょう。
モデル設定パラメータの変更

OpenCV の画像処理ロジックを全面的に書き換える
ここがこれまでとの「決定的な違い」です。今回は for ループで全員に枠を描画するだけではありません。仮想ディレクターのクローズアップ効果を実現するために、 最初に検出された人物に注目し、その人物を切り抜いて拡大し、元画像と「横並び (Side-by-Side)」で表示します。
on_video_decoder_broadcast_client_callback コールバック関数に移動し、元の RGB 変換と枠描画の処理ブロックを見つけて、 cv::cvtColor の下にある AI 処理ロジックを以下の内容に全面的に書き換えてくださ。

人物が検出されなかった場合は、元の単一画面をそのまま表示します。

➤ OpenCV 解説 : このコードの核心は、 box &= cv::Rect(...) によって切り抜き範囲が画像外に出ないようにすること、そして cv::hconcat による水平結合です。 hconcat の後、画像の幅は元の 2 倍になります。ただし、UI が崩れる心配はありません。10-2 章で Qt のイベントフィルタに記述した painter.drawImage(ui->ClientWindow->rect(), ...) が、この超ワイド画像を自動的にスケーリングし、ウィンドウ内にぴったり収めてくれます。
最終確認
最終確認 : 仮想ディレクターの誕生を目撃しましょう!
左下の 「Build and RUN」 をクリックしてプロジェクトを実行します。
1. カメラの RTSP URL を入力し、 START RECEIVER をクリックします。
2. 映像がスムーズに表示されたら、 START DETECTION をクリックして EPTZ 自動フレーミングエンジンを起動します。

➤ テスト結果 : 人物が画面に入ると、元の単一画面が 一瞬で二分割されることが分かります。
• 左側 : 元の広角映像を表示し、緑色の枠で対象をしっかり追跡します。
• 右側 : AI によって切り抜かれ、縦横比を保ったまま拡大された「完璧なクローズアップ映像」を表示します。人物がカメラの前を移動すると、右側のクローズアップ映像は、まるで見えないプロのカメラマンがカメラを操作しているかのように、常に人物を画面中央に保ちます。
おめでとうございます! NexVDO SDK の強力な AI 切り替え機能を習得しただけでなく、OpenCV の切り抜きと結合技術を柔軟に活用し、単調な固定映像をテクノロジー感あふれるスマートディレクターシステムへと進化させる方法も学びました。