opencv:求視頻的前n幀的融合圖像


這方面的資料不多,自己搞了一天才搞出來,給小夥伴們參考一把生氣

#include "opencv2/opencv.hpp"  
#include <iostream>  
using namespace cv;


int main( int argc, char** argv )

{

     
    Mat src1, src2, dst;
    int FirstNmean = 20;     //前n幀平均
    double alpha  = (double)1/FirstNmean; //這裏計算alpha時一定要在前面加上強制轉換符號,否則該變量一直爲0
	double beta = 0 ;
	Mat frame, gray, mask;
	Mat tem_sum ;
	int img_height , img_weight ;
	

	//img1 = (IplImage *)tem_mean ;
	VideoCapture capture;
    capture.open("2.avi");//campus sequence
    if (!capture.isOpened())
    {
        std::cout<<"No camera or video input!\n"<<std::endl;
        return -1;
    }
	capture.set( CV_CAP_PROP_POS_FRAMES,100); 
	capture >> frame;
	img_height = frame.rows ;
	img_weight = frame.cols;
	tem_sum = Mat::zeros(frame.size(), CV_8UC3);
	dst = Mat::zeros(frame.size(), CV_8UC3);

	for(int i = 1;i < (FirstNmean+1);i++ )
	{
	capture.set( CV_CAP_PROP_POS_FRAMES,i); 
	capture >> frame;
	beta = (double)(i-1)/FirstNmean ;
	addWeighted( frame, alpha, tem_sum,1 , 0.0,dst);
	tem_sum = dst ;
	//tem_sum = frame ;
	imshow( "frame", frame );
	//imshow( "tem_sum", tem_sum );
	imshow( "Linear Blend", dst );
	waitKey(60);
	}
    waitKey(0);
    
    return 0;

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章