Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OpenCV和Python检测图像上不同类型的圆和椭圆_Python_Opencv_Image Processing_Feature Detection - Fatal编程技术网

使用OpenCV和Python检测图像上不同类型的圆和椭圆

使用OpenCV和Python检测图像上不同类型的圆和椭圆,python,opencv,image-processing,feature-detection,Python,Opencv,Image Processing,Feature Detection,我需要检测图像上的不同形状,例如椭圆和带虚线边框的圆 使用OpenCV会导致一些问题,例如OpenCV检测到的不是轮廓,而是大量的小分隔线(轮廓)。 在椭圆与“虚线边界”的情况下,我需要它作为一个单一的轮廓,而不是一个分离的对象 你有什么建议来解决这个问题 我还需要识别带有实心边框的椭圆(或圆)和带有虚线边框的椭圆(圆) 带实心边框的椭圆 带虚线边框的椭圆: 更好的方法是使用特定的变换来检测圆和椭圆,而不是一般的“查找轮廓”调用 我对OpenCV的了解还不够,不知道是否有内置的这种检测——应该

我需要检测图像上的不同形状,例如椭圆和带虚线边框的圆

使用OpenCV会导致一些问题,例如OpenCV检测到的不是轮廓,而是大量的小分隔线(轮廓)。 在椭圆与“虚线边界”的情况下,我需要它作为一个单一的轮廓,而不是一个分离的对象

你有什么建议来解决这个问题

我还需要识别带有实心边框的椭圆(或圆)和带有虚线边框的椭圆(圆)

带实心边框的椭圆

带虚线边框的椭圆:


更好的方法是使用特定的变换来检测圆和椭圆,而不是一般的“查找轮廓”调用

我对OpenCV的了解还不够,不知道是否有内置的这种检测——应该有

在互联网上搜索更为通用的“图像椭圆检测”显示,这并不是一个固定的问题——与正方形和矩形检测不同,因此OpenCV已经包含的任何内容都必须进行挖掘。 (基本思想是,基础算法创建一个新的n维空间,其中可以表示目标图像的每个可能的参数化椭圆(例如,每个x和y中心坐标有一个轴,w和h半径,一个用于旋转),并根据目标图像中的像素对比度在该矩阵中填充点击数)。-Sebastian的回答为我记不起的这种方法给出了正确的名称:“Hough变换”,并提供了有关其工作原理以及如何在OpenCV上扩展的必要链接。

该方法应该不会遇到虚线或实线边界的任何问题,或其混合物。我用它来检测我的一个项目中的虚线,省略号应该不会太难


默认情况下,OpenCV仅为和实现Hough变换,但有一个关于如何将其适应椭圆形状的with代码。

将示例图像和当前输出与您的问题一起附加,以获得更清晰的上下文。无法附加为图像,所以我把它们放在我的GoogleDrive上,链接附在上面,但带虚线边框的图像在哪里?我不知道发生了什么,但现在它作为链接附在了上面。我在这里很新,所以有些功能很可怕=)现在可以了吗?很酷-我记不起转换名称,但我刚刚说的话是正确的“OpenCV应该包含所需的转换,但需要进行一些调整才能为您工作“主要的问题是Hough变换检测图像上的所有椭圆形——不管它们是实心还是虚线。但对我来说,线型在检测椭圆和圆形死链接的情况下具有主要价值:/All hail to the SO rules!修复了死链接:)