2017-06-22 150 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

你怎么看白色(或另一种颜色)键盘的情况。我认为我们仍然可以看到它并知道它是一个键盘,但对于一个程序来说这并不容易。 –