欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

使用opencv怎么解析三幀差法

使用opencv怎么解析三幀差法?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)成都,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):13518219792

#include<iostream>
#include<opencv2\core\core.hpp>
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>
using namespace cv;
using namespace std;
const unsigned char FORE_GROUD = 255;int thresh = 10;
int main(int argc,char*argv[])
{   
 VideoCapture video(argv[1]); //判斷如果video是否可以打開(kāi) 
 if(!video.isOpened())  
 return -1;  

//用于保存當(dāng)前幀的圖片 

 Mat currentBGRFrame;  
//用來(lái)保存上一幀和當(dāng)前幀的灰度圖片 
 Mat previousSecondGrayFrame; Mat previousFirstGrayFrame; Mat currentGaryFrame; 
 //保存兩次的幀差 
Mat previousFrameDifference; //previousFrameFirst - previousFrameSecond的差分 
Mat currentFrameDifference;  //currentFrame - previousFrameFirst; 
 //用來(lái)保存幀差的絕對(duì)值 
Mat absFrameDifferece; 
//用來(lái)顯示前景 
 Mat previousSegmentation; Mat currentSegmentation; Mat segmentation; 
 //顯示前景 
 namedWindow("segmentation",1); 
 createTrackbar("閾值:","segmentation",&thresh,FORE_GROUD,NULL); 
 //幀數(shù) 
 int numberFrame = 0; 
//形態(tài)學(xué)處理用到的算子 
 Mat morphologyKernel = getStructuringElement(MORPH_RECT,Size(3,3),Point(-1,-1));  
 for(;;) 
 {  //讀取當(dāng)前幀  
 video >> currentBGRFrame;  
 //判斷當(dāng)前幀是否存在  
 if(!currentBGRFrame.data)   
 break;   
  numberFrame++;  
 //顏色空間的轉(zhuǎn)換  
 cvtColor(currentBGRFrame,currentGaryFrame,COLOR_BGR2GRAY);   
 if( numberFrame == 1)  {  
 //保存當(dāng)前幀的灰度圖   
 previousSecondGrayFrame = currentGaryFrame.clone();    
  //顯示視頻  
 imshow("video",currentBGRFrame);   continue;  }  
 else if( numberFrame == 2)  
 {   
 //保存當(dāng)前幀的灰度圖  
  previousFirstGrayFrame = currentGaryFrame.clone();   
 //previousFirst - previousSecond   
 subtract(previousFirstGrayFrame,previousSecondGrayFrame,previousFrameDifference,Mat(),CV_16SC1);   
 //取絕對(duì)值   
 absFrameDifferece = abs(previousFrameDifference);      
 //位深的改變   
 absFrameDifferece.convertTo(absFrameDifferece,CV_8UC1,1,0);   
 //閾值處理  
 threshold(absFrameDifferece,previousSegmentation,double(thresh),double(FORE_GROUD),THRESH_BINARY);    
  //顯示視頻  
 imshow("video",currentBGRFrame);   
 continue;  }  
 else  
 {   
 //src1-src2   
subtract(currentGaryFrame,previousFirstGrayFrame,currentFrameDifference,Mat(),CV_16SC1);    
   //取絕對(duì)值  
  absFrameDifferece = abs(currentFrameDifference);      
 //位深的改變   absFrameDifferece.convertTo(absFrameDifferece,CV_8UC1,1,0); 
   //閾值處理   
 threshold(absFrameDifferece,currentSegmentation,double(thresh),double(FORE_GROUD),THRESH_BINARY);  //與運(yùn)算   
 bitwise_and(previousSegmentation,currentSegmentation,segmentation);    //中值濾波   
medianBlur(segmentation,segmentation,3); //形態(tài)學(xué)處理(開(kāi)閉運(yùn)算)   
 //morphologyEx(segmentation,segmentation,MORPH_OPEN,morphologyKernel,Point(-1,-1),1,BORDER_REPLICATE);   
 morphologyEx(segmentation,segmentation,MORPH_CLOSE,morphologyKernel,Point(-1,-1),2,BORDER_REPLICATE);      
      //找邊界   
 vector< vector<oint> > contours;   
 vector<Vec4i> hierarchy;   
 //復(fù)制segmentation  
  Mat tempSegmentation = segmentation.clone();  
  findContours( segmentation, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );//CV_RETR_TREE  
  vector< vector<oint> > contours_poly( contours.size() );     
  /*存儲(chǔ)運(yùn)動(dòng)物體*/   
  vector<Rect> boundRect;   
  boundRect.clear();      
 //畫(huà)出運(yùn)動(dòng)物體   
 for(int index = 0;index < contours.size() ;index++)   
 {   
 approxPolyDP( Mat(contours[index]), contours_poly[index], 3, true );   
  Rect rect = boundingRect( Mat(contours_poly[index]) );    
 rectangle(currentBGRFrame,rect,Scalar(0,255,255),2);   }  
 //顯示視頻  
 imshow("video",currentBGRFrame);      
 //前景檢測(cè)   
imshow("segmentation",segmentation);   
 //保存當(dāng)前幀的灰度圖   
 previousFirstGrayFrame = currentGaryFrame.clone();      
 //保存當(dāng)前的前景檢測(cè)   
 previousSegmentation = currentSegmentation.clone();  
 }    
 if(waitKey(33) == 'q')   
 break; 
 } 
 return 0;
}

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

分享題目:使用opencv怎么解析三幀差法
當(dāng)前地址:http://www.chinadenli.net/article0/pigdio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司網(wǎng)站策劃網(wǎng)站維護(hù)網(wǎng)站改版網(wǎng)站設(shè)計(jì)公司小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)