這學期擔任影像處理助教,所以要出作業給學弟妹練習一下 OpenCV
會使用 Emgu 不外乎是環境好建置,只要把將範例專案做好基本上下載回去能馬上使用
可以專心在撰寫功能不需要去建置環境,雖然說建置環境對一個工程師也是一項基本功啦…
首先先來搞清楚一下整個物件追蹤的來龍去脈…
整個流程
1. 畫面上選取要追蹤的區域這裡我稱為 物件 (Object),也就是要被追蹤的東東
2. 計算出物件的 直方圖 (Histogram)
3. 將物件的直方圖與輸入畫面進行 反向投影(Backproject) 計算
4. 透過 物件追蹤演算法(Camshift) 快速地框出反向投影計算出的結果
5. 回傳追蹤區域
於是一直重複 3~5 的過程,我們的物件追蹤程式就大功告成了!
範例專案 ObjectTracking.cs
先宣告所有變數
public Image<hsv, byte=""> hsv; |
建構子
public ObjectTracking(Image<Bgr, Byte> image, Rectangle ROI) |
更新 HUE 畫面
private void UpdateHue(Image<Bgr, Byte> image) |
計算物件直方圖
private void CalObjectHist(Image<Bgr, Byte> image) |
執行追蹤
public Rectangle Tracking(Image<Bgr, Byte> image) |
完整範例專案放置於 Github