帧间差分

来源:互联网 发布:php项目管理软件 编辑:程序博客网 时间:2024/06/16 03:38
#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;}