8.26-9.2:背景差分算法
【一】 帧间差分
最简单的背景提取方法,一帧减去另一帧。
函数实现:
Void cv::absdiff( frameTime1, frameTime2, frameForeground);
为了去除噪音波动等,常常忽略帧间微小的不同,只标出较大的不同,并且进行二值化。
cv::threshold( frameForeground, frameForeground,threshold value, Max value, Threshold type);
实验:从视频中取出两帧图片,进行帧间差分,并且二值化。
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
//从视频中取出两帧
int count = 0;
Mat a, b;
VideoCapture cap;
cap.open("mao.mp4");
for (; ; )
{
Mat image;
cap >> image;
if (!image.data)break;
if ((waitKey(50) == 0x20)&&count==0) {
a = image;
count++;
imshow("截取图1", a);
}
if ((waitKey(50) == 0x20) && count == 1) {
b = image;
count++;
imshow("截取图二", b);
}
if (waitKey(50) == 0x20 &