C++ OPENCV 运动信息提取 三帧差分法

#include<opencv2/opencv.hpp>
#include<iostream>
#include<string>
#include<vector>
using namespace std;
using namespace cv;
int main()
{
    
    VideoCapture videoCap("WZYHCUT.mp4");//你要调用的文件,记得用转义符
    if (!videoCap.isOpened())
    {
        cout<<"读取失败"<<endl;
        return -1;
    }
    
    double videoFPS = videoCap.get(CAP_PROP_FPS);  //获取帧率
  
    double videoPause = 1000 / videoFPS;//每帧图像播放间隔
    Mat framePre; //上一帧
    Mat frameNext; //下一帧
    Mat frameNow; //当前帧
    Mat frameDet; //运动目标帧
    Mat Det1;//帧差
    Mat Det2;
    videoCap >> framePre;
    videoCap >> frameNow;
    int num = 0;
    while (true) {
        namedWindow("Video", WINDOW_FREERATIO);
        imshow("Video", frameNow);
        videoCap >> frameNext;
        if (frameNext.empty() || waitKey(videoPause) == 27)
        {
            break;
        }


        if (num == 0) {
            cvtColor(framePre, framePre, COLOR_RGB2GRAY);//灰度化
            cvtColor(frameNow, frameNow, COLOR_RGB2GRAY);
            num++;
        }
        cvtColor(frameNext, frameNext, COLOR_RGB2GRAY);
        absdiff(framePre, frameNow, Det1);  //帧差1
        absdiff(frameNow, frameNext, Det2);     //帧差2
        threshold(Det1, Det1, 0, 255, THRESH_OTSU);  //自适应阈值化
        threshold(Det2, Det2, 0, 255, THRESH_OTSU);
        Mat element = getStructuringElement(0, Size(3, 3));  //膨胀核
        dilate(Det1, Det1, element);    //膨胀
        dilate(Det2, Det2, element);
        bitwise_and(Det1, Det2, frameDet);//与操作
     
     namedWindow("运动目标", WINDOW_FREERATIO);
        imshow("运动目标", frameDet);
        framePre = frameNow;
        frameNow = frameNext;
        waitKey(videoPause);
    }

videoCap.release();
    return 0;

}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值