2017-06-06 122 views
0

我正在开发一个项目,我需要能够看到所有4个纸牌符号之间的区别:hart,spade,diamond,club(只是符号,我不使用实际的纸牌)。这意味着角度,照明距离和符号不断变化(因此根据轮廓区域检测物体将不会成为选项)使用opencv python检测复杂形状

所以基本上,当我在我的前面拿着一个哈特符号相机我试图在里面画'哈特'这个词。如果我用铁锹做同样的事情,我希望它能够写出铁锹等。

我试过用各种不同的方式做这件事,但所有的尝试都失败了,或者没有像我想要的那样工作。

我已经试过的方法:

  • haarcascades
  • 模板匹配,不工作,由于是可能的
  • 颜色检测,因为有2个符号只做了一半工作的旋转每种颜色
  • 特征匹配:this tutorial不起作用,因为符号不具有足够的细节来寻找关键点

如果需要,我可以添加这些尝试的源代码,但我不认为它会增加任何价值,因为它并没有真正让我到任何地方。

图片我使用:

enter image description here

任何帮助是值得欢迎的。

回答

1

由于您正在处理相对较低的复杂符号,为什么不尝试轮廓匹配整形?你可能不得不适应一些更复杂的情况,但我认为这可能是第一个好办法:

http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_contours/py_contours_more_functions/py_contours_more_functions.html

http://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=findcontours

请记住,你也有颜色信息在您的应用程序使用。无论如何,也看看http://www.morethantechnical.com/2012/12/27/2d-curve-matching-in-opencv-w-code/

+0

这帮了我很多,谢谢! – FrankK