opencv结构的森林边缘检测和findcontour



我正试图通过visual c++使用opencv来提取图像的轮廓。我能够使用findcontours的opencv教程来做到这一点。findcontours分两步工作

  1. 使用canny边缘检测器检测边缘
  2. 输入canny的输出以查找轮廓

我想在"结构化森林边缘检测"(Zitnick等人)中尝试同样的方法。我可以提取边缘并显示它们,但当我试图将输出提供给findcontour时。我在内存位置0x0020EE9C处得到一个"cv::异常"错误。(请参阅下面的代码)。我做错了什么?

Mat src = imread("image.jpg");
src.convertTo(src, CV_32F, 1.0 / 255.0);
Mat edges(src.size(), src.type());
Ptr<StructuredEdgeDetection> pDollar = createStructuredEdgeDetection("model.yml.gz");
pDollar->detectEdges(src, edges);
findContours(edges, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
pDollar->detectEdges(src, edges);

CCD_ 1型为CV_32F。您必须将其转换为8位单通道图像

最新更新