我需要检测图像上的不同形状,例如带有虚线边框的椭圆和圆形。
使用OpenCV会导致一些麻烦,例如openCV检测不到轮廓,但检测到一些小的分离线(轮廓)。 如果椭圆带有"虚线边框"我需要它作为单个轮廓,而不是分离的对象。
你有什么建议来解决这个问题?
我还需要识别带有实线边框的椭圆(或圆圈)和带有虚线边框的椭圆(圆圈)
带有实线边框的椭圆
带虚线边框的椭圆:
答案 0 :(得分:5)
Hough transform不应该有虚线或实线边框或其混合的任何问题。我用它来检测我的一个项目中的虚线,省略号应该不会太难。
默认情况下,OpenCV仅实现circles和straight lines的Hough变换,但有blog entry代码,其中包含如何使其适应椭圆形状的代码。
答案 1 :(得分:0)
更好的想法是使用特定的变换来检测圆和椭圆而不是一般的"查找轮廓"调用
我不熟悉OpenCV,知道是否存在这种检测 - 应该是。
互联网搜索更通用的图像椭圆检测"显示它不是一个固定的问题 - 不像方形和矩形检测,所以无论OpenCV已经包含什么,都必须进行调整。 (基本思想是基础算法创建一个新的n维空间,其中可以表示目标图像的每个可能的参数化椭圆(例如,每个x和y中心坐标的轴,w和h半径,以及一个用于旋转),并根据目标图像中的像素对比度填充此矩阵中的命中数。) - 塞巴斯蒂安的答案为这种方法提出了正确的名称我记不起来了:"霍夫变换&#34 ;,并提供有关其工作方式的必要链接,以及如何在OpenCV上扩展它。