基于帧间差进行运动目标检测

相邻帧差检测:优点是运算快速,实时性高,缺点是无法应对光照的突变,物体间一般具有空洞。
三帧差检测:在一定程度上优化了运动物体双边,粗轮廓的现象,相比之下,三帧差法比相邻帧差法更适用于物体移动速度较快的情况。

#include <opencv2/opencv.hpp>/*** @brief diff2_detec   相邻帧差运动目标检测* @param gray_pre      输入:前一帧图像(gray)* @param gray_now      输入:当前帧图像(gray)* @return              输出:图像是否为全黑,全黑返回false,非全黑返回true*/
bool diff2_detection(cv::Mat gray_pre, cv::Mat gray_now)
{cv::Mat diff;cv::absdiff(gray_pre, gray_now, diff);threshold(diff, diff, 0, 255, cv::THRESH_OTSU);     //自适应阈值化// 形态学操作cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(8, 8));cv::morphologyEx(diff, diff, cv::MORPH_OPEN, kernel);// 显示结果cv::imshow("Output", diff);cv::waitKey(100);if(mean(diff).val[0] > 0.01)        // 计算差分图像灰度平均值{return true;}else{return false;}
}/*** @brief diff3_detec   三帧差运动目标检测* @param gray_pre      输入:前一帧图像(gray)* @param gray_now      输入:当前帧图像(gray)* @param gray_next     输入:后一帧图像(gray)* @return              输出:图像是否为全黑,全黑返回false,非全黑返回true*/
bool diff3_detection(cv::Mat gray_pre, cv::Mat gray_now, cv::Mat gray_next)
{cv::Mat diff_pre, diff_next, diff;// 计算帧差cv::absdiff(gray_pre, gray_now, diff_pre);cv::absdiff(gray_now, gray_next, diff_next);threshold(diff_pre, diff_pre, 0, 255, cv::THRESH_OTSU);     //自适应阈值化threshold(diff_next, diff_next, 0, 255, cv::THRESH_OTSU);   //自适应阈值化// 形态学操作cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(8, 8));cv::morphologyEx(diff_pre, diff_pre, cv::MORPH_OPEN, kernel);cv::morphologyEx(diff_next, diff_next, cv::MORPH_OPEN, kernel);cv::bitwise_and(diff_pre, diff_next, diff);//与操作// 显示结果cv::imshow("Output", diff);cv::waitKey(100);if(mean(diff).val[0] > 0.01)        // 计算差分图像灰度平均值{return true;}else{return false;}
}int main()
{// 打开视频文件cv::VideoCapture cap("video.mp4");if (!cap.isOpened()){std::cout << "无法打开视频文件" << std::endl;return -1;}cv::Mat frame_pre, frame_now, frame_next;cv::Mat gray_pre, gray_now, gray_next;// 读取前三帧图像cap >> frame_pre;cv::cvtColor(frame_pre, gray_pre, cv::COLOR_BGR2GRAY);cap >> frame_now;cv::cvtColor(frame_now, gray_now, cv::COLOR_BGR2GRAY);cap >> frame_next;cv::cvtColor(frame_next, gray_next, cv::COLOR_BGR2GRAY);while (true){diff2_detection(gray_pre, gray_now);diff3_detection(gray_pre, gray_now, gray_next);// 更新帧gray_pre = gray_now.clone();gray_now = gray_next.clone();cap >> frame_next;if (frame_next.empty()) {break;}cv::cvtColor(frame_next, gray_next, cv::COLOR_BGR2GRAY);}// 释放资源cap.release();cv::destroyAllWindows();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/629117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_paramfromdata.c

文章目录 openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_paramfromdata.c概述笔记END openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_paramfromdata.c 概述 开源工程包含的头文件类型是.inc, 要重命名为.h, 否则没有c头文件语法提示 从数组中载入大数p,q,g 建立ossl…

golang defer 详解

defer 的作用和执行时机 go 的 defer 是用来延迟执行函数的&#xff0c;而且延迟发生在调用函数 return 之后&#xff0c;比如&#xff1a; func a() int {defer b()return 0 }b 的执行是发生在 return 0 之后&#xff0c;注意 defer 的语法&#xff0c;关键字 defer 之后是函…

安全狗方案入选工信部《2023年工业和信息化领域数据安全典型案例名单》

近日&#xff0c;工业和信息化部网络安全管理局公布了2023年工业和信息化领域数据安全典型案例名单。 安全狗与厦门卫星定位应用股份有限公司、中移 (上海) 信息通信科技有限公司联合申报的智慧交通云数据安全与隐私保障典型案例也成功入选。 厦门服云信息科技有限公司&#…

Vue-24、Vue过滤器

1、效果 2、过滤器实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>过滤器</title><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.…

mac 系统中vscode 返回上一次文件编辑位置快捷键

mac 系统中vscode 返回上一次文件编辑位置快捷键 以下内容由chatgpt中文网 动态生成,助力开发找我 方式1&#xff1a; Command -&#xff1a;返回到上一个编辑位置。 方式2 control -&#xff1a;返回到上一个编辑位置。

OpenCV-Python(45):立体图像中的深度地图

基础 在OpenCV中&#xff0c;深度地图通常是通过计算立体视觉&#xff08;stereo vision&#xff09;或结构光&#xff08;structured light&#xff09;技术得到的。立体视觉是通过将两个或多个摄像机&#xff08;或图像&#xff09;的视角结合起来&#xff0c;计算物体的深度…

Kafka 的架构

实验过程 1.三个虚拟机中解压kafka软件包 tar -zxvf kafka_2.11-1.1.1.tgz 2.修改 3 个节点配置文件 在 zookeeper 节点&#xff0c;进入 kafka_2.11-1.1.1/config 目录下&#xff0c;编辑 server.properties 文件 [rootdb1 ~]# cd kafka_2.11-1.1.1/config [rootdb1 con…

智能路由器 端口映射 (UPnP) Padavan内网端口映射配置方法

新版本Padavan 4.4内核的端口映射配置和老版本的不太一样,因为新版本默认是启用的 UPnP端口映射, 同时默认使用的是 IGD UPnP自动端口映射, UPnP名词解释: UPnP通用即插即用&#xff0c;是一组协议的统称&#xff0c;是一种基于TCP/IP、UDP和HTTP的分布式、开放体系&#xff…

P9847 [ICPC2021 Nanjing R] Crystalfly 题解 (SPJ)

[ICPC2021 Nanjing R] Crystalfly 传送门&#xff1f; 题面翻译 给定一个 n ( 1 ≤ n ≤ 1 0 5 ) n(1\le n\le10^5) n(1≤n≤105) 个节点的树&#xff0c;每个节点上有 a i a_i ai​ 只晶蝶。派蒙最初在 1 1 1 号节点&#xff0c;并获得 1 1 1 号节点的所有晶蝶&#xf…

Java设计模式之策略模式详解

Java设计模式之策略模式详解 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一同踏入Java设计模式之策略模式的世界&#xff0c;探讨代码中的…

NetSuite学习笔记 - 中心

一、什么是中心&#xff1f; 对于每个用户&#xff0c;NetSuite 会根据用户的指定角色显示一组可变的标签页面&#xff0c;称为中心。通俗来讲呢&#xff0c;NetSuite的中心其实就是我们常说的“导航菜单”。 只是在我过去常见的系统中&#xff0c;导航菜单一般都是固定的&am…

Elasticsearch Windows部署-ELK技术栈

1、下载Elasticsearch、kibana、logstash 本文不介绍ELK相关原理知识&#xff0c;只记录部署操作过程 下载地址Past Releases of Elastic Stack Software | Elastic 选择同一版本&#xff0c;这里选择是当前最新版本8.11.3 解压放在同目录下&#xff0c;方便后续操作与使用 …

python 创建虚拟环境

为啥需要创建虚拟环境 在ubuntu直接pip安装的错误&#xff0c;规避自己安装的包与系统使用包之间的冲突 ➜ ~ pip3 install fastapi error: externally-managed-environment This environment is externally managed ╰─> To install Python packages system-wide, try a…

GPT实战系列-实战Qwen在Cuda 12+24G部署方案

GPT实战系列-实战Qwen在Cuda1224G部署方案 ChatGLM4进行新闻发布&#xff0c;但还没有开源更新&#xff0c;在此之际&#xff0c;实战部署测试Qwen大模型。目前Qwen的口碑貌似还不错&#xff0c;测试显卡内存24G&#xff0c;毕竟有限&#xff0c;排除了Qwen14非量化方案Qwen-1…

浅入浅出Spring架构设计

浅入浅出Spring架构设计 前言 为什么需要Spring? 什么是Spring? 对于这样的问题&#xff0c;大部分人都是处于一种朦朦胧胧的状态&#xff0c;说的出来&#xff0c;但又不是完全说的出来&#xff0c;今天我们就以架构设计的角度尝试解开Spring的神秘面纱。 本篇文章以由浅…

RK3566 linux加入uvc app

SDK中external/uvc_app/目录提供了将板卡模拟成uvc camera的功能。 一、buildroot使能uvc_app 1、进入到buildroot目录 在sdk目录下执行以下命令&#xff1a; cd buildroot 2、选择defconfig 执行命令&#xff1a; source build/envsetup.sh 输入数字然后回车选择板卡&…

【Vue3】3-4 : 组件的属性与事件是如何进行处理的

有时候组件上的属性或事件并不想进行组件通信&#xff0c;那么Vue是如何处理的呢&#xff1f; 组件的属性与事件 默认不通过props接收的话&#xff0c;属性会直接挂载到组件容器上&#xff0c;事件也是如此&#xff0c;会直接挂载到组件容器上。可通过 inheritAttrs 选项阻止…

Java中Redis常用的20个方法

开头语&#xff1a; 大家好&#xff01;欢迎来到本篇博客&#xff0c;今天我们将探讨Java中Redis的常用方法。作为一种强大的缓存和数据存储工具&#xff0c;Redis在Java应用中扮演着重要的角色。我们将介绍20个常用的Redis方法&#xff0c;希望对大家在Java开发中更好地使用R…

两数之和(Hash表)[简单]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给定一个整数数组nums和一个整数目标值target&#xff0c;请你在该数组中找出"和"为目标值target的那两个整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元…

HC小区管理系统商用测试用例

HC小区管理系统商用测试用例 说明 HC小区管理系统商用之前&#xff0c;必须要经过严格的测试&#xff0c;可能因为环境差异&#xff0c;以及配置差异等导致生产环境不稳定&#xff0c;或者存在系统bug。 1.1、操作视频 hc_java110的个人空间-hc_java110个人主页-哔哩哔哩视…