1

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

4

0 に答える 0