#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 发布