zoukankan      html  css  js  c++  java
  • OpenCV高斯模型

    int main(int argc, char** argv)  
    {  
        //std::string videoFile = "E:\C_VC_code\Text_Photo\dingdang.avi";  
      
        //cv::VideoCapture capture;  
        //capture.open(videoFile);  
        //VideoCapture capture("E:\C_VC_code\Text_Photo\大屏互动+行人检测_标清.flv");
        VideoCapture capture(0);
        if (!capture.isOpened())  
        {  
            std::cout<<"read video failure"<<std::endl;  
            return -1;  
        }  
      
      
        cv::BackgroundSubtractorMOG2 mog;  
      
        cv::Mat foreground;  
        cv::Mat background;  
      
        cv::Mat frame;  
        Mat frame1;
        long frameNo = 0;  
        double scalar = 0.3;
    
        while (1)  
        {  
    
            capture>>frame1;
            resize(frame1,frame,Size(frame1.cols*scalar,frame1.rows*scalar),1,1,3);
      
            // 运动前景检测,并更新背景  
            mog(frame, foreground, 0.2);         
              
            // 腐蚀  
            cv::erode(foreground, foreground, cv::Mat());  
            
            // 膨胀  
            cv::dilate(foreground, foreground, cv::Mat());  
      
            mog.getBackgroundImage(background);   // 返回当前背景图像  
            
            threshold(foreground,foreground,40,250,CV_THRESH_BINARY_INV);
            cv::imshow("foreground", foreground);  
            cv::imshow("background", background); 
      
            if (cv::waitKey(40) > 0)  
            {  
                break;  
            }  
        }  
         
        return 0;  
    }  

     opencv-3.0.0版本的变化:

    int main(int argc, char *argv[]) {
        cv::Mat frame;
        cv::Mat back;
        cv::Mat fore;
        cv::VideoCapture cap(0);
        cv::Ptr<BackgroundSubtractorMOG2> bg = createBackgroundSubtractorMOG2();
    
        bg->setNMixtures(30);
        //bg.bShadowDetection = false;
        std::vector<std::vector<cv::Point> > contours;
    
        cv::namedWindow("Frame");
        cv::namedWindow("Background");
    
        for (;;) {
            cap >> frame;
            //bg.operator()(frame, fore);
            bg->apply(frame, fore,0.01);
            bg->getBackgroundImage(back);
            cv::erode(fore, fore, cv::Mat());
            cv::dilate(fore, fore, cv::Mat());
            cv::findContours(fore, contours, CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
            cv::drawContours(frame, contours, -1, cv::Scalar(0, 0, 255), 2);
            threshold(fore, fore, 80, 250, CV_THRESH_BINARY_INV);
            cv::imshow("Foreground", fore);
            cv::imshow("Frame", frame);
            cv::imshow("Background", back);
            if (cv::waitKey(30) >= 0)
                break;
        }
        return 0;
    }
  • 相关阅读:
    内存溢出与内存泄漏
    Android性能优化系列之Bitmap图片优化
    android 内存泄漏,以及检测方法
    android view绘制流程 面试
    USACO milking cows
    USACO beads
    POJ3311 TSP问题 xingxing在努力
    HDU5074 dp xingxing在努力
    HDU2821 深搜 xingxing1024
    HDU5592 排队问题 xingxing在努力
  • 原文地址:https://www.cnblogs.com/mypsq/p/5005670.html
Copyright © 2011-2022 走看看