#include "core/core.hpp"
#include "highgui/highgui.hpp"
#include "imgproc/imgproc.hpp"
using namespace cv;
int main()
{
VideoCapture videoCap("C:/Users/Administrator/Desktop/final.avi");
Mat framePre; //上一帧
Mat frameNow; //当前帧
Mat frameDet; //运动物体
videoCap >> framePre;
cvtColor(framePre, framePre, CV_BGR2GRAY);
while (true)
{
videoCap >> frameNow;
if (frameNow.empty())
{
break;
}
cvtColor(frameNow, frameNow, CV_RGB2GRAY);
absdiff(frameNow, framePre, frameDet);
framePre = frameNow;
imshow("Video", frameNow);
imshow("Detection", frameDet);
waitKey(1);
}
return 0;
}
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
VideoCapture capture("C:\\Users\\aoe\\Desktop\\avi\\walk.avi");//获取视频
if (!capture.isOpened())
return -1;
double rate = capture.get(CV_CAP_PROP_FPS);//获取视频帧率
int delay = 1000 / rate;
Mat framepro, frame, dframe;
bool flag = false;
namedWindow("image");
namedWindow("test");
while (capture.read(frame))
{
if (false == flag)
{
framepro = frame.clone();//将第一帧图像拷贝给framePro
flag = true;
}
else
{
absdiff(frame, framepro, dframe);//帧间差分计算两幅图像各个通道的相对应元素的差的绝对值。
framepro = frame.clone();//将当前帧拷贝给framepro
threshold(dframe, dframe, 80, 255, CV_THRESH_BINARY);//阈值分割
imshow("image", frame);
imshow("test", dframe);
waitKey(delay);
}
}
waitKey();
return 0;
}