opencv3/c++关于移动对象的轮廓的跟踪详解

  

使用opencv提供的背景去除算法(资讯或高斯混合模型GMM)去除背景,然后将获取的目标二值化后通过筛选目标轮廓获得目标位置。

        # include   使用名称空间的简历;//基于移动对象的轮廓的跟踪   int main ()   {   垫框架;   bool国旗=true;   VideoCapture捕获;   capture.open (0);   如果(! capture.isOpened ())   {   printf(“不能打开……\ n”);   返回1;   }   namedWindow(“面具”,WINDOW_AUTOSIZE);   namedWindow(“输出”,WINDOW_AUTOSIZE);   PtrpKNN=createBackgroundSubtractorKNN ();//PtrpMOG2=createBackgroundSubtractorMOG2 ();   而(capture.read(框架)   {   垫KNNMask;   std:: vector在轮廓;   pKNN→应用(框架、KNNMask);//(* pMOG2)。应用(框架、mogMask);   阈值(KNNMask KNNMask, 100年,255年,THRESH_BINARY);   垫内核=getStructuringElement (MORPH_RECT、尺寸(3、3));   morphologyEx (KNNMask KNNMask MORPH_OPEN,内核,点(1,1));   findContours (KNNMask、轮廓、RETR_EXTERNAL CHAIN_APPROX_SIMPLE,点(0,0));   for (int i=0;我& lt;contours.size ();我+ +)   {//轮廓面积   双面积=contourArea(轮廓[我]);//轮廓外接矩阵   矩形矩形=boundingRect(轮廓[我]);   如果(区域& lt;500 | | rect.width & lt;50 | | rect.height & lt;50)继续;   矩形(框架、矩形、标量(0255255),2);   putText(点(矩形框架,“目标”。x, rect.y) CV_FONT_NORMAL FONT_HERSHEY_PLAIN,标量(0255 0),2、8);   }   imshow(“面具”,KNNMask);   imshow(“输出”,框架);   waitKey (1);   }   返回0;   }      

 opencv3/c++关于移动对象的轮廓的跟踪详解

  

 opencv3/c++关于移动对象的轮廓的跟踪详解

  

以上这篇opencv3/c++关于移动对象的轮廓的跟踪详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

opencv3/c++关于移动对象的轮廓的跟踪详解