2012-02-09 42 views
0

我想優化我的程序,其中我使用的顏色對象跟蹤算法描述爲here。唯一的區別是我使用的是cvBlob庫,而不是cv :: moments(cvBlob更快,更準確)。使用profiler(valgrind + kcachegrind)我發現〜29%的時間是通過色彩空間轉換方法(cv :: cvtColor;我正在跟蹤三種顏色的對象)。我正在從BGR轉換爲HSV。OpenCV - 如何優化顏色跟蹤程序?

我讀過一些使用YCbCr色彩空間的文章,在色彩追蹤方面更好。從BGR轉換爲YCbCR是不錯的主意?它應該稍微快一些,因爲它需要較少的乘法運算(我不確定這一點 - 我不知道OpenCv是如何在內部執行的)。這個算法是否需要一些改變,或者我可以將跟蹤顏色的上下邊界從HSV轉換爲YCbCr,然後使用inRangeS方法,就像我對HSV所做的那樣?

有沒有辦法從YcbCr(或YUV)驅動程序獲取幀?我不是在問HSV,因爲這不是v4l2,AFAIR支持的。

您有任何其他想法嗎?我不想使用IPP或GPU。

回答

2

查看關於cvtColor的OpenCV文檔。它談到使用cvtColorBGR2YCbCr之間的轉換。

(請嘗試一下,並在這裏對結果進行評論,即在YCbCr模式下花費的總時間佔多少比例,因爲它將在未來幫助很多人。)