camshift 實現自動化跟蹤的小技巧

2021-06-15 20:09:22 字數 1398 閱讀 1100

camshift 實現自動化跟蹤的小技巧

opencv 提供了使用基於顏色的跟蹤演算法camshift, 很好的演算法,可是它是個半自動的演算法,它需要使用者在跟蹤介面設定跟蹤的目標。怎麼預先設定目標再來跟蹤呢?

本人偷了個懶,加入了用一張來設定跟蹤的目標,在啟動中載入,生成跟蹤需要的histogram。這樣實現了自動化的跟蹤吧。

步驟如下:

1. 找到你需要跟蹤的物體,拿到攝像頭前,照一張相(print screen),這裡需要注意的是,由於光線變化,臨近攝像頭會亮一些,離遠會暗一些,那麼最好跟蹤的物體的拍攝顏色與實際跟蹤中顏色相近。

例如這是乙個跟蹤綠色物體的

3。在**中加入

void loadtemplateimage()

{iplimage *tempimage = cvloadimage("f:/om_tracking/test cam shift/shadowtrack/debug/green.bmp",1);

cvcvtcolor( tempimage, hsv, cv_bgr2hsv );

int _vmin = vmin, _vmax = vmax;

cvinranges( hsv, cvscalar(0,smin,min(_vmin,_vmax),0),

cvscalar(180,256,max(_vmin,_vmax),0), mask );

cvsplit( hsv, hue, 0, 0, 0 );

selection.x = 1;

selection.y = 1;

selection.width = 320-1;

selection.height= 240-1;

cvsetimageroi( hue, selection );

cvsetimageroi( mask, selection );

cvcalchist( &hue, hist, 0, mask );

float max_val = 0.f;  

cvgetminmaxhistvalue( hist, 0, &max_val, 0, 0 );

cvconvertscale( hist->bins, hist->bins, max_val ? 255. / max_val : 0., 0 );

cvresetimageroi( hue );

cvresetimageroi( mask );

track_window = selection;

track_object = 1;

cvreleaseimage(&tempimage);

4,去掉原來的生成hist的**。在啟動時候加入loadtemplateimage

感悟自動化編譯實現

感悟自動化編譯實現 author zfive5 zhaozidong email zfive5 yahoo.com.cn vc6也有乙個類似.net dte的介面元件 automation object model 週六研究了乙個上午,結果還是放棄了用automation object model來...

電纜管理實現自動化

電纜管理通常需要繁瑣的手動操作。隨著資料中心運營步伐的加速,有線基礎設施必須實現自動化。自動管理工具使資料中心管理員監控不同基礎設施,收集相關資料,直接接收警告和響應事件。自動化為伺服器 儲存和交換機帶來了便利,但底層物理基礎設施 互聯電纜仍然是手動 繁瑣的,很容易出錯,管理也十分混亂。aim 自動...

RF 實現介面自動化

首先進行requuestslibrary安裝 cmd 命令列執行 pip install u requests pip install u robotframework requests 首先要安裝成功,然後庫名一定要大寫,大寫小敏感 引入requuestslibrary庫,出現波浪線後按住crtl...