2017-06-22 138 views
1

我正在開發一個項目,並遇到了一種情況。我想在紅外圖像中檢測矩形對象(黑色鍵盤)。背景非常乾淨,所以它不是一個真正的難題,我在OpenCV中使用了簡單的閾值minAreaRect來解決它。 Easy case of the problem使用openCV檢測圖像中部分模糊的矩形

但我也希望程序來跟蹤該對象時,我用我的手來移動它(是的,實時)。而且我的手會覆蓋像這種情況下的一小部分物體。 Tricky case of the problem

我最初的想法是在容易的情況下學習對象大小,對於困難的情況,嘗試匹配我的「學習矩形」來覆蓋儘可能多的白色像素。

任何人都有更好的解決方案,也許基於特徵的方法?我不知道使用功能是否可以改善這種情況,因爲這些紅外圖像中的物體大部分是黑色的。

預先感謝您。

回答

1

如何在閾值圖像上使用像膨脹和侵蝕這樣的形態操作(Opencv具有這些實現)。一旦你明白了,你可以嘗試一些角點檢測/輪廓檢測或線檢測器(在opencv contrib模塊中)來了解對象的形狀。

+0

謝謝。我嘗試使用形態學操作,它似乎工作。 –

+0

@duy_sau_rom如果你發現答案有用,並且它解決了你的問題,請考慮upvoting並將答案標記爲'accepted' –

+0

我是stackoverflow中的新成員,需要多一點點信譽才能贊成。我以後會回來爲你效勞。 :') –

1

你的「棘手」情況仍然相當簡單,可以用擴張/侵蝕(Shawn Mathew提及)解決,然後使用相同的minAreaRect。在這裏,右邊是腐蝕和膨脹與5x5的內核後您的閾值的圖像,minAreaRect發現它一個旋轉矩形,繪製在左邊的原限圖像:

enter image description here

您有興趣更多複雜的情況下,例如,你的手完全覆蓋鍵盤的一個短邊緣?

+0

謝謝你的回答。我想這種情況相當困難,如果不知道鍵盤的原始大小,就不能輕易解決? –

+0

我不認爲在不知道原始尺寸的情況下就可以解決問題,但如果您不知道尺寸大小,但長/短邊比例不是這樣,它會變得有點簡單:minAreaRect爲您提供縮短版本的矩形,您估計其中一個短邊在它旁邊有較少的白色像素,然後在該方向上延伸矩形。類似的東西。 – Headcrab

+0

你怎麼看白色(或另一種顏色)鍵盤的情況。我認爲我們仍然可以看到它並知道它是一個鍵盤,但對於一個程序來說這並不容易。 –