2011-01-31 123 views
3

我想用OpenCV比較兩個圖像。我可以過濾其他訓練數據集中最近的匹配結果嗎?
示例:包含使用單手顯示編號5的訓練圖像的數據庫。使用OpenCV比較兩個圖像

是否可以匹配其他人,與該培訓圖像相同的符號..? 使用OpenCV。請幫幫我。

回答

3

就像sinelaw說的那樣,沒有簡單易懂的解決方案一般

但是,我可以想到一個簡單的方法,可以用於您的特定示例

  • 檢測圖像中與人體皮膚對應的區域。假設這個人沒有戴手套(如果他們知道手套的顏色有幫助)。有關皮膚檢測,請參閱this example。基本上,您可以使用色度將圖像轉換爲YUV和閾值,因爲衆所周知,人類皮膚只佔色度光譜的一小部分,無論是否爲種族
  • 檢測輪廓。在OpenCV中,這是使用cvFindContours函數完成的。這個函數的example用於查找省略號。你對任何形狀的輪廓感興趣,而不僅僅是橢圓。
  • 現在,通過所有的輪廓,並尋找一個輪廓,看起來像一個開放的手,使5信號。這並不難,因爲這聽起來,因爲你是一個凸包(紅色輪廓)有4-5凸缺陷後(黑色箭頭):

convexity defects

  • 圖像以上是從OpenCV API描述的cvConvexityDefects函數。請閱讀其說明以瞭解如何使用它的信息。
  • 一旦你有凸包,檢查缺陷的大小。其中4個應該大致相同(因爲手指長度相同)。如果是這樣的話,你的開放手牌會給你五分。