qt+opencv实现敏感区域移动侦测

qt+opencv实现敏感区域移动侦测
上一篇qt +opencv dnn+tensorflow实现敏感区域预警使用起来准确率高,能针对特定的物品侵入进行专门识别,但运行速度不是很快,不能达到实时识别,今天使用移动侦测算法进行了下测试,发现速度相当快,达到了实时检测实时反映的效果。这也是现有的监控系统普遍采用的预警方式,但也有不足,对室外有风时会引发误报,如果在光线稳定的室内,效果是相当好的。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

从图上可以看出,打开摄像头后。点移动侦测,进入预警模式,放入手面立即就声音报警了。
移动侦测一般使用的是背景帧差法,有二帧差,三帧差,等算法。
相关详细算法网上一大把,主要算法在页尾贴出。这里重点说一下检测到入侵后报警关联的算法。一般把大于100像素作为取舍点。然后使用qsound进行异步调用。
帧差法速度是相当的快,效果也相当的好,在使用四路同时显示时,还能做到实时检测。
在这里插入图片描述
QT中的主要代码
Mat frame, gray_frame;
Mat BgImg, FrImg_src, FrImg;

Mat BgImg_32, FrImg_src_32, FrImg_32;

bool firstflag = true;
//while (1)
 tz=5;
 Sleep(30);
 while (capture.read(frame))
{
   // capture >> frame;
    if (frame.empty())
        return;

    if (firstflag)
    {
        cvtColor(frame, BgImg, CV_BGR2GRAY);
        BgImg.convertTo(BgImg_32, CV_32FC1);   //BgImg、FrImg、FrImg_src都已经转换为CV_32FC1.
        firstflag = false;

        FrImg_32 = BgImg_32.clone();
        FrImg_src_32 = BgImg_32.clone();
    }
    else
    {
        cvtColor(frame, gray_frame, CV_BGR2GRAY);
        gray_frame.convertTo(gray_frame, CV_32FC1);

        absdiff(gray_frame, BgImg_32, FrImg_src_32);//这是主要的代码将二个mat对比
        threshold(FrImg_src_32, FrImg_32, 50, 255.0, CV_THRESH_BINARY);
        updateBG(gray_frame, BgImg_32, 0.005);

        BgImg_32.convertTo(BgImg, CV_8UC1);
        FrImg_32.convertTo(FrImg, CV_8UC1);
        FrImg_src_32.convertTo(FrImg_src, CV_8UC1);

        drawRect(frame, FrImg);

// imshow(“src”, frame);
// imshow(“back”, BgImg);
// imshow(“force”, FrImg);
// imshow(“forcesrc”, FrImg_src);

要使用QtOpenCV实现录制视频的功能,可以参考以下步骤: 1. 首先,确保你已经安装了QtOpenCV,并且配置好了开发环境。 2. 创建一个Qt项目,并在项目中包含OpenCV的头文件和库文件。 3. 在项目中创建一个Widget类,继承自QWidget,并在头文件中添加必要的成员变量和函数。 4. 在Widget类的构造函数中初始化摄像头,并设置视频的帧率、宽度和高度。 5. 创建一个定时器对象,并连接到一个槽函数readFrame(),用于读取摄像头的每一帧图像。 6. 在readFrame()函数中,使用OpenCV的VideoCapture类读取摄像头的图像,并进行帧差法处理,判断是否存在物体运动。 7. 如果存在物体运动,可以选择保存当前帧的图像或者将当前帧写入视频文件。 8. 在Widget类的析构函数中释放摄像头和定时器对象。 9. 在Qt的界面中添加一个按钮,用于开始和停止录制视频。 10. 在按钮的槽函数中,根据按钮的状态来控制录制视频的开始和停止。 以上是一个简单的实现录制视频的步骤,具体的代码实现可以参考引用\[1\]中的示例代码。希望对你有帮助! #### 引用[.reference_title] - *1* *2* *3* [[视觉实战案例]Qt+OpenCV实现USB摄像头监测移动物体并录制视频功能(帧差法)](https://blog.csdn.net/fengyaowuhui/article/details/124656844)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值