使用opencv python检测复杂的形状

时间:2017-06-06 10:05:40

标签: python opencv

我正在开展一个项目,我需要能够看到所有4个扑克牌符号之间的区别:哈特,铁锹,钻石,俱乐部(只是符号,我不使用真正的扑克牌)时间。这意味着角度,光照和与符号的距离不断变化(因此根据轮廓区域检测物体不是一种选择)

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

我尝试以各种不同的方式做到这一点,但所有尝试都失败了或者没有像我想要的那样好。

我尝试过的方法:

  • haarcascades
  • 模板匹配,由于可能的旋转而无效
  • 颜色检测,只有一半的工作,因为每种颜色有2个符号
  • 功能匹配:this tutorial不起作用,因为符号没有足够的细节来查找关键点

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

我正在使用的图片:

enter image description here

欢迎任何帮助。

1 个答案:

答案 0 :(得分: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/