C++ 如何比较两幅图像的轮廓

C++ 如何比较两幅图像的轮廓,c++,opencv,C++,Opencv,我已经将所有轮廓的面积存储在第一帧的矢量中,现在我想比较第二帧和第一帧的每个轮廓的面积。若有相同的面积,它们放在一个向量中,若它们不相同,它们放在另一个向量中。我怎么做?请帮帮我。 提前谢谢 // one frame at a time void draw_ellipse(Mat &a,int count) { findContours( th1, contours, hierarchy, CV_RETR_TREE, CV_CHA

我已经将所有轮廓的面积存储在第一帧的矢量中,现在我想比较第二帧和第一帧的每个轮廓的面积。若有相同的面积,它们放在一个向量中,若它们不相同,它们放在另一个向量中。我怎么做?请帮帮我。 提前谢谢

// 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]);
          }

       }

    }  
//一次一帧
无效绘制椭圆(材料与a、整数计数)
{ 
查找轮廓(th1、轮廓、层次、CV_RETR_树、,
CV_链_近似_简单,点(0,0));

对于(i=0;iOpenCV中有预定义的函数来匹配轮廓

看起来很简单,您面临的问题是什么?实际上,我无法将第二帧的每个轮廓与第一帧的所有轮廓进行比较,因为在函数中,所有事情都是根据第一帧的条件完成的..但是当第二帧come它也会满足相同的条件,并且一次处理每一帧的功能。@Tyro:轮廓比较一点都不简单。你是在尝试匹配第一帧和第二帧的某个点吗?@Yves Daoust,是的,我现在明白了。问题只是我评论时的前三行。之后它就被编辑了。这绝对不简单.