視頻前景提取_網絡新聞視頻的特征及前景_視頻背景音樂提取

電腦雜談  發布時間:2020-02-15 07:01:12  來源:網絡整理

網絡新聞視頻的特點及前景_視頻前景提取_視頻背景音樂提取

這是(II)中的Mat版本,特別注意一下accumulateWeighted這個函數的用法。

我將官網文檔中的函數表明貼起來:

accumulateWeighted

Updates a running average.

視頻前景提取_視頻背景音樂提取_網絡新聞視頻的特點及前景

C++:voidaccumulateWeighted(InputArraysrc,

InputOutputArraydst, doublealpha, InputArraymask=noArray())

Python:cv2.accumulateWeighted(src,

dst, alpha[, mask])→ None

視頻前景提取_視頻背景音樂提取_網絡新聞視頻的特點及前景

C:voidcvRunningAvg(const

CvArr*image, CvArr*acc, doublealpha, const CvArr*mask=NULL)

Python:cv.RunningAvg(image,

acc, alpha, mask=None)→ None

視頻前景提取_視頻背景音樂提取_網絡新聞視頻的特點及前景

Parameters:

The function calculates the weighted sum of the input imagesrcand the accumulatordstso

thatdstbecomes a running average of a frame sequence:

\texttt{dst} (x,y)  \leftarrow (1- \texttt{alpha} )  \cdot \texttt{dst} (x,y) +  \texttt{alpha} \cdot \texttt{src} (x,y)  \quad \text{if} \quad \texttt{mask} (x,y)  \ne 0

視頻背景音樂提取_視頻前景提取_網絡新聞視頻的特點及前景

That is,alpharegulates the update speed (how fast the accumulator “forgets” about earlier images). The function supports multi-channel

images. Each channel is processed independently.

See also

,,

代碼:

//opencv2.0風格的視頻前景提取
#include "cv.h"
#include "highgui.h"
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <iostream>
#include <cstdio>
using namespace std;
using namespace cv;
int main()
{
	Mat frame, frame_copy,img1,output,gray,frame_copy_8U;
	double learningRate = 0.01;	// 控制背景累積學習的速率
	char* input_name = "001.avi";
	//從視頻讀入
	VideoCapture capture(input_name);
	cvNamedWindow( "result", 1 );
	if(capture.isOpened()/*capture*/)	// 讀取文件開關
	{
		//對每一幀做處理
		for(;;)
		{
			//frame = cvQueryFrame( capture );	// 讀取文件開關
			capture >> frame;
			if(!frame.empty())
			{ 
				cvtColor(frame, gray, CV_BGR2GRAY);
				//進行處理
				if (frame_copy.empty())
				{
					//記錄第一幀
					gray.convertTo(frame_copy, CV_32F);
				}
				frame_copy.convertTo(frame_copy_8U, CV_8U);
				//做差分
				absdiff(frame_copy_8U, gray, img1);
				// 對得到的前景進行閾值選取,去掉偽前景
				threshold(img1, output, 30, 255, THRESH_BINARY_INV);
				accumulateWeighted(gray, frame_copy,0.01,output);
				imshow("src", frame);
				imshow("result", output);
			}
			else
			{ 
				printf(" --(!) No captured frame -- Break!");
				break;
			}
			//10ms中按任意鍵進入此if塊
			if( cvWaitKey( 10 ) >= 0 )
				break;
		}
	}
	return 0;
}

更好版本(II):


本文來自電腦雜談,轉載請注明本文網址:
http://www.772070.live/a/bofangqi/article-140825-1.html

    相關閱讀
    發表評論  請自覺遵守互聯網相關的政策法規,嚴禁發布、暴力、反動的言論

    熱點圖片
    拼命載入中...
    天津快乐十分20选8技巧 浙江11选五玩法规则 福彩开奖25选5 快速赛车博彩 股票在线平台 科乐长春麻将 王者捕鱼下载链接 湖北风采30选5走势图 浙江快乐彩杀号技巧 送彩金棋牌游戏? 股票开户那个好