嗨,我編碼了一個簡單的下棋機器人的視覺系統,我想改善以前的一些研究允許使用的攝像頭和一個標準的國際象棋和兩個被允許在比賽中移動。到目前爲止,我可以在通過網絡攝像頭採集的圖像中找到該電路板,並且我希望通過對不同的連續圖像進行檢測來確定發生了什麼變化,然後使用之前關於電路板佔用情況的信息來檢測移動。檢測象棋使用OpenCV的工具連續圖像的不同移動
我的問題是,我似乎無法可靠地檢測此刻的變化,我現在的管道是這樣的: 提取兩個圖像 - >直方圖均衡差分圖像 - >侵蝕和擴張差異圖像以去除細微的變化 - >製作一個二進制副本並進行距離變換 - >獲取最大的斑點(對應於DT之後的最高值並填充該斑點) - >再次重複,直到DT返回一個足以忽略變化的值。 ++
我編碼這一切的OpenCV和C。但是我的洪水填充似乎總是要麼不填充斑點,因此大多數情況下我只能得到一個檢測到的變化。我也試過使用cv::inpaint
,但這也沒有幫助。所以我的問題是;我只是使用錯誤的方法,或者某種方式可以使變化檢測更可靠。在前者的情況下,人們是否可以建議其他路線,最好在合理的時間內用C++/Python和/或OpenCV編碼?
感謝
一個音符:如果我能我會避開C++的這一點。可能用Python更快地完成它。除非你在C++中找到一些非常有價值的庫,你只需要使用。在這種情況下,我會包裝它並從python中使用它。 – 2011-05-06 16:46:06
感謝您的建議,我不害怕完全放棄C++,我可以全部使用python,我更多的是首先尋找這個想法。我對第一階段的限制之一是不需要修改任何方式(所以沒有標記或類似的東西),因此我會很感激任何意見考慮到這一點 – makokal 2011-05-11 11:38:45
你可以依靠顏色這些作品是黑色的還是白色的?如果是這樣,您可以在開始時在板上進行PCA,並根據其顏色識別兩側。但從那時起,你將不得不跟蹤董事會的方向。 – 2011-05-12 18:32:04