使用OpenCV的Canny边缘检测从二进制图像中检测边缘

时间:2018-03-06 19:00:55

标签: c++ opencv

我正在尝试提取一些交通标志的轮廓。图像通过几个步骤以获得良好的分割图像。在应用Canny方法之前的最后一步,我得到了这个图像:

enter image description here

申请Canny后,我得到了这张图片:

enter image description here

算法按预期执行,但左上图像返回开放轮廓。 所以,我的问题是,有没有办法以左上角图像返回闭合轮廓的方式使用Canny?

3 个答案:

答案 0 :(得分:2)

如果您已有二进制图像,Canny不会提供更多信息。 Canny可用于在灰度图像中查找边缘(它决定渐变是否为边缘),如果图像是黑白图像,Canny将返回您已有的边缘,

我认为你需要使用findContours(),它取决于参数只返回白色或黑色物体,有或没有孔。它还处理图像的边缘。

答案 1 :(得分:0)

在大多数情况下,图像边界条件存在问题。在这种特殊情况下,我会尝试使用图像周围的一些额外像素填充原始图像。根据您添加这些填充像素的方式,您应该在符号周围获得完整的轮廓。

答案 2 :(得分:0)

您可以在应用Canny Edge Detection之前和之后使用Morphological Transformations来操纵结果。