Opencv 彩色图像中水平圆边缘的检测
我试图在彩色图像中检测包含椭圆形顶部的区域 下面是我画的一些例子:Opencv 彩色图像中水平圆边缘的检测,opencv,image-processing,computer-vision,edge-detection,Opencv,Image Processing,Computer Vision,Edge Detection,我试图在彩色图像中检测包含椭圆形顶部的区域 下面是我画的一些例子: 你将如何做到这一点?我在图像处理方面没有经验,但我愿意阅读和学习。我主要使用C++的OpenCV,但是我也可以使用其他的库。 一般来说,你所问的东西是一个大问题。在现实世界的图像中,你需要找到每一个椭圆形状,区分哪一个有顶(直到你容忍和考虑的角度)。然后,您需要很好地分割这些形状,以便可以找到顶部为椭圆形对象的区域 但是,如果您需要像示例中那样找到更简单的图像,但仍然是一种更通用的方法,则可以首先使用任何边缘检测(例如Can
你将如何做到这一点?我在图像处理方面没有经验,但我愿意阅读和学习。我主要使用C++的OpenCV,但是我也可以使用其他的库。 一般来说,你所问的东西是一个大问题。在现实世界的图像中,你需要找到每一个椭圆形状,区分哪一个有顶(直到你容忍和考虑的角度)。然后,您需要很好地分割这些形状,以便可以找到顶部为椭圆形对象的区域 但是,如果您需要像示例中那样找到更简单的图像,但仍然是一种更通用的方法,则可以首先使用任何边缘检测(例如Canny)获得边缘。然后,对曲线和椭圆使用Hough变换。但我不认为有函数或库用于此。因此,您可能需要实现自己的Hough变换。为此,你们必须决定你们所说的椭圆形顶部到底是什么意思。对于您的两张图像,如果您成功找到椭圆形顶部,只需获取其下方的区域即可。但为了更全面,您可能需要使用更复杂的方法在其下分割形状 对于Hough变换;
一般来说,你要问的是一个大问题。在现实世界的图像中,你需要找到每一个椭圆形状,区分哪一个有顶(直到你容忍和考虑的角度)。然后,您需要很好地分割这些形状,以便可以找到顶部为椭圆形对象的区域 但是,如果您需要像示例中那样找到更简单的图像,但仍然是一种更通用的方法,则可以首先使用任何边缘检测(例如Canny)获得边缘。然后,对曲线和椭圆使用Hough变换。但我不认为有函数或库用于此。因此,您可能需要实现自己的Hough变换。为此,你们必须决定你们所说的椭圆形顶部到底是什么意思。对于您的两张图像,如果您成功找到椭圆形顶部,只需获取其下方的区域即可。但为了更全面,您可能需要使用更复杂的方法在其下分割形状 对于Hough变换;
对于将其与椭圆一起使用,实际上有一个函数可以检测opencv上的圆 与低参数2一起使用-因为您应该只检测给定顶部的圆 另一种方式应该是这样的 1-低通滤波器(高斯模糊,在opencv文档中搜索) 2-颜色过滤器-可选(如果您知道对象的颜色,请使用该颜色,否则请尝试从像素(image.width/2,0)获取颜色) 3-canny边缘检测(再次参考文档) 4-查找等高线(再次参考文档) 5-如果你有一个轮廓,最好是大面积的,包括像素(image.width/2,0)-你将在这里使用PointPolyContest-然后你在底部有一个斑点 6-检测这个斑点是否是“椭圆形”是一个大问题;但是你可以使用“椭圆形”属性进行一些过滤
- 椭圆曲线有1个且只有1个峰值点。应该只有1个轮廓像素具有最大高度
- 椭圆曲线的任何3点都不能代表直线。这不难实现,但对于算法来说很复杂
- 椭圆曲线有1个且只有1个峰值点。应该只有1个轮廓像素具有最大高度
- 椭圆曲线的任何3点都不能代表直线。这不难实现,但对于算法来说很复杂
对于圆,我建议使用比Hough变换更简单的方法。 从上面的图片中,我看到椭圆形有一个统一的颜色,而其余的颜色 图像不存在
对于椭圆检测,您可以参考。这两种方法基于hough变换,如果需要,可以轻松调整。对于椭圆检测,您可以参考。这两种方法基于hough变换,如果需要,可以轻松调整。正如我所知,opencv中的圆检测器无法检测椭圆形状。作为它们的数学数学定义将不同?抱歉,我不喜欢opencv,因为我知道opencv中的圆检测器无法检测椭圆形状。因为它们的数学定义将不同?抱歉,我不喜欢opencv虽然这种方法可以帮助处理这两幅图像,但问题不是“我想在这些图像中找到这两个颜色一致的对象”