#include "cv.h"
#include "highgui.h"
#include<math.h>
using namespace cv;
using namespace std;
int main()
{
//读取图像
Mat frame1,frame2,frame3,frame4,frame;
VideoCapture capture("walk.avi");
if(!capture.isOpened())
return -1;
int totalFrmNum=capture.get(CV_CAP_PROP_FRAME_COUNT);
int deley=1000/capture.get(CV_CAP_PROP_FPS);
int width=capture.get(CV_CAP_PROP_FRAME_WIDTH);
int height=capture.get(CV_CAP_PROP_FRAME_HEIGHT);
int readyCount=0;
bool flag=false;
for(int i=0;i<totalFrmNum;i++)
{
capture.read(frame);
if(i%4==0)
cvtColor( frame, frame1, CV_RGB2GRAY );
else if(i%4==1)
cvtColor( frame, frame2, CV_RGB2GRAY );
else if(i%4==2)
cvtColor( frame, frame3, CV_RGB2GRAY );
else
cvtColor( frame, frame4, CV_RGB2GRAY );
readyCount++;
if(readyCount==4) readyCount=0;
if(readyCount==0)
{
for(int ii=0;ii<height;ii++)
{
for(int jj=0;jj<width;jj++)
{
int temp1=abs(frame1.at<uchar>(ii,jj)-frame3.at<uchar>(ii,jj));
int temp2=abs(frame2.at<uchar>(ii,jj)-frame4.at<uchar>(ii,jj));
int temp=temp1*temp2;
if(temp>200)
frame1.at<uchar>(ii,jj)=255;
else
frame1.at<uchar>(ii,jj)=0;
}
}
imshow("test",frame1);
cvWaitKey(deley*4);
}
}
waitKey(0);
return 0;
}
运动目标检测——帧间差分法
最新推荐文章于 2020-12-05 03:13:26 发布
本文介绍了一种基于帧间差分法的运动目标检测方法。通过读取视频文件,将连续四帧转换为灰度图像,然后计算相邻帧之间的像素差异。当像素差异超过阈值200时,标记该像素为运动目标,最终显示运动目标检测结果。这种方法适用于实时视频处理,展示了基本的图像处理和运动检测原理。
摘要由CSDN通过智能技术生成