首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV -如何从Canny函数的结果中提取边缘?

OpenCV -如何从Canny函数的结果中提取边缘?
EN

Stack Overflow用户
提问于 2013-09-09 11:40:00
回答 4查看 20.9K关注 0票数 2

我在OpenCV中使用Canny()函数,如下所示

代码语言:javascript
复制
Mat detected_edges = GetImage...;
Canny( detected_edges, detected_edges, 20, 20*3, kernel_size );

我的问题是这个函数的结果只是一个黑白图像,我想要得到检测到的一组边缘。

在OpenCV上

该函数在输入图像中查找边缘,并使用Canny算法在输出映射边缘进行标记。threshold1和threshold2之间的最小值用于边缘链接。最大值用于寻找强边的初始段。

但是我不知道如何从结果图像中提取线条,有人可以帮我。

更新用于下面测试的图像,此图像包括Canny函数的结果

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-09 11:50:23

取决于你想要的形状,

  • findContours
  • 脊线 /圆
票数 3
EN

Stack Overflow用户

发布于 2013-09-09 14:30:32

正如berak的答案所指出的,在执行Canny边缘检测之后,您可以使用findContours霍夫转换来查找直线。

然而,我想补充的是,在执行Canny边缘检测和查找线条之前,做一些图像处理可能是有益的。例如,你似乎得到了很多不必要的轮廓在地板上,也有白色的‘规格’周围发现你的Canny结果。

平滑图像将有所帮助,以及可能使用均值移位算法来分割您的图像的颜色。也许还有其他处理你的图像的新方法,你可能会想要探索。

票数 4
EN

Stack Overflow用户

发布于 2013-09-09 12:11:44

Canny算法不知道边缘的实际形状。这些花哨的单像素宽线实际上是简单边缘检测Sobel算子的峰值,用非极大值抑制提取。Canny不将像素连接到链或段中。它可以内部形成连接的组件来应用滞后阈值,但这是实现细节。

你必须自己去做,看看贝拉克对可能的例程的回答。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18697427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档