C++ OpenCV-如何从Canny函数的结果中提取边?
我在OpenCV中使用Canny()函数,如下所示C++ OpenCV-如何从Canny函数的结果中提取边?,c++,opencv,C++,Opencv,我在OpenCV中使用Canny()函数,如下所示 Mat detected_edges = GetImage...; Canny( detected_edges, detected_edges, 20, 20*3, kernel_size ); 我的问题是这个函数的结果只是一个黑白图像,我想得到检测到的边缘集 在OpenCV文档上编写 该函数在输入图像中查找边并在中标记它们 使用Canny算法输出贴图边缘。最小值 threshold1和threshold2之间用于边缘链接。这个 最大值用于查
Mat detected_edges = GetImage...;
Canny( detected_edges, detected_edges, 20, 20*3, kernel_size );
我的问题是这个函数的结果只是一个黑白图像,我想得到检测到的边缘集
在OpenCV文档上编写
该函数在输入图像中查找边并在中标记它们
使用Canny算法输出贴图边缘。最小值
threshold1和threshold2之间用于边缘链接。这个
最大值用于查找强边的初始分段
但是我不知道如何从结果图像中提取线条,有人可以帮助我
更新我在下面测试的图像,该图像包含Canny函数的结果
根据要检索的形状
- /圈
您必须自己完成,请参阅berak的答案以了解可能的例程。正如berak的答案所指出的,在执行Canny边缘检测后,您可以使用和变换来查找线条 然而,我想补充一点,在执行Canny边缘检测和查找线条之前,进行一点图像处理可能是有益的。例如,你似乎在地板上得到了很多不想要的轮廓,在你精明的结果周围也发现了白色的“规格”
这张图片会很有帮助,也许还可以使用一个工具来按颜色分割你的图片。您可能还想探索处理图像的其他新方法。正如berak所说,您可以尝试在边缘检测后使用FindContentors查找连接的组件。这里还有另一个问题: 以下是一个例子:
请注意,在本例中,他们使用它来绘图,但您可以将其用于您选择的任何目的。您的测试是什么image@WangYudong:以上更新中的测试图像,谢谢!