如何比较比较两个图像的轮廓



我已经将第一帧的所有轮廓的面积存储在一个向量中,现在我想将第二帧的每个轮廓的面积与第一帧进行比较。如果面积相同,则放入一个向量,如果面积不同,则放入另一个向量。我该怎么做?请帮助我。提前致谢

// one frame at a time
void draw_ellipse(Mat &a,int count)
{ 
     findContours( th1, contours, hierarchy, CV_RETR_TREE,
                    CV_CHAIN_APPROX_SIMPLE, Point(0,0) ); 
      for(i=0;i<contours.size();i++)
       {
          area.push_back(contourArea(contours[i]));// area is a vector
       }
      for(j=1;j<=count;j++)
       {
         for(i=0;i<contours.size();i++)
          {
            if(area[i]>area[i+1])         // v1,v2,v3 are vectors
               v1.push_back(contours[i]);
            else if(area[i]<area[i+1])
               v2.push_back(contours[i]);
            else if(area[i]==area[i+1])
               v3.push_back(contours[i]);
          }
       }
    }  

现在这个函数比较同一帧内的轮廓,但我希望第二帧的每个轮廓与第一帧的每个轮廓进行比较,那么它应该在不同的向量中。

OpenCV 中有预定义的函数来匹配轮廓 Opencv 轮廓匹配C++

最新更新