OpenCV2.4.3 findContours函数返回轮廓未关闭

时间:2013-01-18 15:27:12

标签: image-processing opencv

我正在使用OpenCV2.4.3 findContours函数。但是一些输出轮廓没有关闭。

   cv::cvtColor(m_Image, src, COLOR_BGR2GRAY);
   blur(src,srcFiltered, cv::Size(3,3));
   cv::Canny(srcFiltered, edge, 20, 10, 3);
   vector<vector<cv::Point>> vecContours;
   vector<Vec4i> vecHierarchy;
   findContours(edge, vecContours, vecHierarchy, CV_RETR_CCOMP ,CV_CHAIN_APPROX_NONE);
   typedef cv::Vec<uchar,3> U8C3Elem;
   Mat contours = Mat::ones(src.rows, src.cols, CV_8UC1)*255;
   for(size_t i=0; i<vecContours.size(); ++i)
   {
      vector<cv::Point>& vec = vecContours.at(i);

      // draw contours
      U8C3Elem clr = U8C3Elem(rand()%255, rand()%255, rand()%255);
      for(int j=0; j<vec.size(); ++j)
      {
         m_Image.at<U8C3Elem>(vec.at(j)) = clr;
      }
   }

我参考了一些图像处理书籍,轮廓被定义为闭合曲线。在下图中,具有不同颜色的线代表findContours函数找到的不同轮廓。 那么,谁有想法?谢谢!

这是带轮廓的图像 http://images.cnitblog.com/blog/374163/201301/18232515-fee482f8a641429f8c8b08081545a2c5.png

0 个答案:

没有答案