opencv 绘制目标矩形

来源:互联网 发布:萧山网络问政进化镇 编辑:程序博客网 时间:2024/06/07 20:36
//混合高斯模型#include <cv.h>  #include <highgui.h>  #include <opencv2/opencv.hpp>#include<iostream>using namespace cv;  int main(){VideoCapture video("video1.avi");Mat frame,mask,thresholdImage, output;video>>frame;int frameNum=1;BackgroundSubtractorMOG bgSubtractor(20,10,0.5,false);while(true){video>>frame;++frameNum;bgSubtractor(frame,mask,0.001);imshow("mask",mask);imshow("origin",frame);Mat image = mask;std::vector<std::vector<cv::Point> > contours ;      //获取轮廓不包括轮廓内的轮廓      cv::findContours(image , contours ,           RETR_EXTERNAL , CV_CHAIN_APPROX_NONE) ;      cv::Mat result(image.size() , CV_8U , cv::Scalar(0)) ;      cv::drawContours(result , contours ,          -1 , cv::Scalar(125) , 2) ;  //绘制轮廓的最小外结矩形  //int i = contours.size()-1;//for(i;i>0;i--)for(int i=0;i<contours.size();i++){RotatedRect rect=minAreaRect(contours[i]); //绘制轮廓的最小外结矩形           Point2f P[4];          rect.points(P);          for(int j=0;j<=3;j++)          {              line(result,P[j],P[(j+1)%4],Scalar(255),2);          }  }     cv::imshow("resultImage" , result) ; waitKey(20);}return 0;}