10-7 人形 EPTZ 自動構圖功能範例教學
在前面幾個章節中,我們學會了如何頻繁地「替換模型檔案」來讓 AI 具備不同領域的辨識超能力。但您可能會好奇: 如果我不想換模型,AI 還能玩出什麼新花樣?
本章節將為您揭曉 QDEEP 引擎的另一項功能:EPTZ 自動構圖。 這一次,我們將 直接沿用 11-3 的人形偵測模型! 只要切換一個 API 的設定值,底層引擎就會從原本的「單純畫框」,自動切換為具有「目標裁切 ( Crop ) 與局部放大」特寫效果的專業虛擬導播機!
➤ 人形偵測模型可以回顧 : 10-3 人形偵測功能範例教學
學習目標
透過本章節,您將學會:
1. 一機多用:不更換模型檔案(沿用 10-3 人形模型),僅透過切換 QDEEP 的設定列舉值來改變 AI 引擎的行為模式。
2. 掌握 OpenCV 的進階技巧:安全裁切 (cv::Rect)、複製 (clone)、影像放大 (resize).
3. 實作 OpenCV 水平拼接,將兩張不同的影像組合成一張超寬的並排畫面交給 Qt 渲染。
準備工作
因為「人形 EPTZ 自動構圖」的本質依然是尋找「人」,所以系統會直接利用我們 10-3 使用過的人形大腦。請打開您專案的建置輸出目錄,確認裡面依然躺著我們在 10-3 貼進去的 QDEEP.OD.TINY.PERSON.CFG 與 QDEEP.OD.TINY.PERSON.WEIGHTS 。只要這兩個檔案還在,您的準備工作就完成了!
核心 API 要怎麼改?
既然模型檔案不變,我們要如何告訴 AI 引擎啟用 EPTZ 功能呢? 秘密就藏在 QDEEP_CREATE_OBJECT_DETECT 的第三個參數: 模型配置類型 ( 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之後,影像的寬度變成了原本的兩倍!但別擔心 UI 介面會壞掉,我們在 10-2 章節寫在 Qt 事件過濾器裡的 painter.drawImage(ui->ClientWindow->rect(), ...) ,會自動將這張超寬的圖片縮放並完美塞進我們的視窗中!
最終驗證
最終驗證:見證虛擬導播的誕生!
請按下左下角的「Build and RUN」執行專案:
1. 輸入攝影機 RTSP 網址,點擊 START RECEIVER。
2. 畫面順暢後,點擊 START DETECTION 啟動 EPTZ 自動構圖引擎。

➤ 測試結果 : 當人物走進畫面時,您會發現原本單一的畫面 瞬間一分為二!
• 左半邊 : 顯示原始的廣角畫面,並用綠色框牢牢追蹤著目標。
• 右半邊 : 顯示被 AI 裁切並等比例放大的「完美特寫畫面」! 當人物在鏡頭前走動時,右邊的特寫鏡頭會像是有一個隱形的專業攝影師在幫您轉動鏡頭一樣,永遠將人物保持在畫面正中央。
恭喜您! 您不僅掌握了 NexVDO SDK 強大的 AI 切換能力,更學會了如何靈活運用 OpenCV 的裁切與拼接技術,將單調的死板畫面,昇華為充滿科技感的智慧導播系統!