Python | OpenCV 即時圖片中的物件追蹤
📚 前言
在上一篇 視訊檔案處理與剪輯 中,我們學會了如何對影片進行剪輯、抽取影格與合成等操作。
這一篇要介紹如何使用 OpenCV 即時圖片中的物件追蹤。
物件追蹤是電腦視覺的重要應用之一,常用於監控、運動分析、互動系統等場景。
除了攝影機,我們也可以用影片檔來模擬,方便測試追蹤效果。
🎨 範例影片
- 來源:Pexels - Tennis Video,屬於無版權影片,可自由下載與使用。
- 內容:影片呈現一個小孩打擊網球的畫面,長度約 3 秒,畫面中有明顯的移動物件,非常適合用來測試追蹤演算法。
- 下載後將檔名改為
tennis.mp4,放到專案的assets/目錄下。
🔎 原理說明
- 物件追蹤 (Object Tracking):在影片或即時圖片中,持續追蹤某個選定的目標。
- 流程:
- 讀取來源 (攝影機 / 影片檔 / 網路串流)。
- 選定要追蹤的物件區域 (ROI)。
- 建立追蹤器 (Tracker)。
- 在迴圈中更新追蹤結果,並顯示。
🧠 追蹤演算法比較
OpenCV 4.10+ 重整了追蹤器 API,舊版 KCF、CSRT、MOSSE 等已完全移除。目前可用的追蹤器如下:
| 演算法 | 需要模型檔 | 精準度 | 說明 |
|---|---|---|---|
| MIL | 否 | 中 | 不需模型,適合快速測試 |
| GOTURN | 是 | 中 | 需下載 caffemodel 模型 |
| DaSiamRPN | 是 | 高 | 需下載 onnx 模型 |
| Nano | 是 | 高 | 輕量級深度學習模型 |
| VIT | 是 | 最高 | Vision Transformer,精準但較慢 |
建立追蹤器的語法(需安裝 opencv-contrib-python):
1 | tracker = cv2.TrackerMIL_create() # 不需模型,推薦用於測試 |
💻 範例程式 — 即時攝影機物件追蹤
1 | # tracking_camera.py |
![]()
圖:即時追蹤選定的物件
註:由於本身沒有攝影鏡頭,所以無法示範效果。
💻 範例程式 — 使用影片檔進行物件追蹤
1 | # tracking_video.py |
![]()
圖:在影片檔中追蹤選定的物件
⚠️ 注意事項
- 追蹤器需要先選定 ROI,建議在第一幀選擇。
- 不同演算法有不同特性,需依場景選擇。
- 若物件消失或被遮擋,追蹤器可能失敗。
- 測試時可使用交通影片或運動影片,物件移動明顯,追蹤效果更佳。
📊 應用場景
- 監控系統:追蹤特定人物或車輛。
- 運動分析:追蹤球員或球的移動。
- 互動應用:即時追蹤手勢或物件。
- 自動化系統:追蹤工業流程中的物件。
🎯 結語
本篇我們學會了如何使用 OpenCV 即時圖片中的物件追蹤,並透過不同演算法持續追蹤選定的目標。
同時也解決了新版 OpenCV 中常見的錯誤,確保程式能在最新環境下正常執行。
除了攝影機,也能用影片檔來測試,方便在沒有攝影機的環境下練習。
這些技術在監控、運動分析與互動應用中非常常見,後續可以結合人臉偵測或特徵匹配,打造更完整的系統。
下一篇進入 光流分析,學習如何偵測影片中物件的運動方向與速度。
📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。
註:以上參考了
OpenCV Tutorials
OpenCV-Python Tutorials
Pexels — 免費影片素材
