当前位置: 首页 > 知识库问答 >
问题:

从Canny边到轮廓的OpenCV

常业
2023-03-14

我有一个边缘被坎尼探测到。我想提取边缘的轮廓。

我已经检查了下面的帖子。OpenCV转换Canny边缘到轮廓。

但是它没有处理复杂的形状。例如,带矩形的圆或带线的圆。

cv::findContours()函数有两个问题。1.返回非闭合边的闭合轮廓,但我需要非闭合轮廓2。为闭合边返回2个闭合轮廓(可能其中一个轮廓用于边,另一个用于边的内侧,但我想要两个轮廓中的一个。

有没有办法解决这个问题?谢谢。

PS:我已经上传了样本图片。

共有1个答案

唐声
2023-03-14

这完全取决于在查找轮廓时选择的参数。

在OpenCV中,可以使用

contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

然后画出来

cv2.drawContours(im, contours, -1, (0, 255, 0), -1) #---set the last parameter to -1
 类似资料:
  • 我想提取图像的轮廓,用点坐标序列表示。 使用,我能够生成一个只包含图像边缘的二进制图像。然后,我尝试使用来提取轮廓。不过,结果并不好。 对于每一条边,我通常得到两条线,就像它被认为是一个非常薄的区域一样。我想简化我的轮廓,这样我可以把它们画成单线。或者用不同的函数提取它们,直接产生正确的结果会更好。 我查看了OpenCV的文档,但没有找到任何有用的东西,但我想我不是第一个遇到类似问题的人。有什么功

  • 我有一个OpenCV应用程序,它来自一个办公室内部(很多细节)的网络摄像头流,在那里我必须找到一个人工标记。标记是白色背景上的黑色正方形。我使用Canny找到边缘和cvFindContours进行轮廓绘制,然后approxPolyDP和co.进行过滤和查找候选对象,然后使用局部直方图进行进一步过滤,bla bla bla bla。。。 这或多或少是有效的,但不是我想要的。FindContours总

  • 问题内容: 我正在尝试使用CSS创建一个圆, …只有一个div: 并仅使用CSS定义。不允许使用SVG,WebGL,DirectX等。 我尝试绘制一个完整的圆,然后将另一个圆与另一个圆淡化div,它确实起作用,但是我正在寻找一种更优雅的选择。 问题答案: 您可以使用border-top-left-radius和border-top-right- radius属性根据框的高度(和添加的边框)在框上四

  • 问题内容: 有人知道CSS中“边框”和“轮廓”属性之间的区别吗?如果没有区别,那么为什么同一事物有两个属性? 问题答案: CSS outline属性是一个令人困惑的属性。当您第一次了解它时,很难理解它与border属性之间的区别。W3C将其解释为具有以下差异: 1.轮廓不占用空间。 2.轮廓线可能不是矩形的。

  • 我正在为Cytoscape版本3.8.2中的网络创建一个手动布局。我希望能够定义边缘长度,这样网络看起来更均匀。有定义属性边长的方法吗? 具体地说,我希望像下面的网络小节是一个完美的圆。

  • 我正在使用openCV检测图像中的矩形。在许多例子中,我使用阈值findContour约PolyDP。 如下图所示,我的问题是findContours找到的轮廓无法继续,因此在approxPolyDP之后,我无法获得矩形。。。 那么,你知道如何解决这个问题吗?谢谢你。:) 另一个问题:为什么轮廓是灰色的?在阈值之后,应该只有白色和黑色,不是吗? 轮廓 经批准