opencv结构化森林边缘检测和查找结果

时间:2015-11-09 23:29:58

标签: opencv visual-c++ image-processing edge-detection opencv3.0

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

  1. 使用canny边缘检测器检测边缘。
  2. 将canny的输出提供给findcontours。
  3. 我想尝试使用' Structured Forest Edge Detection' (Zitnick等)。我能够提取边缘并显示它们,但是当我尝试将输出提供给findcontours时。我在内存位置0x0020EE9C'正在获得' cv :: Exception。错误。 (见下面的代码)。我做错了什么?

    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));
    

1 个答案:

答案 0 :(得分:0)

pDollar->detectEdges(src, edges);

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