OpenCV运动分析和目标跟踪(2)累积操作函数accumulateSquare()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

将源图像的平方加到累积器图像中。
该函数将输入图像 src 或其选定区域提升到2的幂次方,然后加到累积器 dst 中:
dst ( x , y ) ← dst ( x , y ) + src ( x , y ) 2 if mask ( x , y ) ≠ 0 \texttt{dst} (x,y) \leftarrow \texttt{dst} (x,y) + \texttt{src} (x,y)^2 \quad \text{if} \quad \texttt{mask} (x,y) \ne 0 dst(x,y)dst(x,y)+src(x,y)2ifmask(x,y)=0
函数支持多通道图像。每个通道独立处理。

函数原型


void cv::accumulateSquare	
(InputArray 	src,InputOutputArray 	dst,InputArray 	mask = noArray() 
)	

参数

  • 参数src 输入图像,可以是单通道或三通道,8位或32位浮点数。
  • 参数dst 累积器图像,通道数与输入图像相同,32位或64位浮点数。
  • 参数mask 可选的操作掩码。

代码示例


#include <iostream>
#include <opencv2/opencv.hpp>int main()
{// 加载图像cv::Mat frame = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/hawk.jpg", cv::IMREAD_GRAYSCALE );if ( !frame.data ){std::cout << "Could not open or find the image" << std::endl;return -1;}// 初始化累积平方和cv::Mat sqSum = cv::Mat::zeros( frame.size(), CV_32F );// 模拟多帧累积for ( int i = 0; i < 100; ++i ){// 使用同一图像多次以模拟多帧情况cv::accumulateSquare( frame, sqSum );}// 防止累积平方和为0的情况sqSum += 1;  // 添加一个小常数避免分母为0// 计算累积平方和的最大值double maxVal;cv::minMaxLoc( sqSum, nullptr, &maxVal );// 将累积平方和转换回8位图像以便保存sqSum.convertTo( sqSum, CV_8U, 255.0 / maxVal );  // 归一化// 显示原始图像cv::imshow( "Original Image", frame );// 显示累积平方和结果图像cv::imshow( "Accumulated Square Result", sqSum );// 等待按键,以便查看图像cv::waitKey( 0 );// 关闭所有窗口cv::destroyAllWindows();// 保存结果cv::imwrite( "accumulated_square_result.jpg", sqSum );return 0;
}

运行结果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Android WebView H5 Hybrid 混和开发

对于故乡&#xff0c;我忽然有了新的理解&#xff1a;人的故乡&#xff0c;并不止于一块特定的土地&#xff0c;而是一种辽阔无比的心情&#xff0c;不受空间和时间的限制&#xff1b;这心情一经唤起&#xff0c;就是你已经回到了故乡。——《记忆与印象》 前言 移动互联网发展…

用Python画一个五星红旗

#codingutf-8 import turtle import mathdef draw_polygon(aTurtle, size50, n3): 绘制正多边形args:aTurtle: turtle对象实例size: int类型&#xff0c;正多边形的边长n: int类型&#xff0c;是几边形 for i in range(n):aTurtle.forward(size)aTurtle.left(360.0/n)de…

esp32-C2 对接火山引擎实现语音转文本(二)

目录 一、 语音转文本初始化 二、 WedStream 事件处理函数 一、 语音转文本初始化 Volcengine_vtt_handle_t Volcengine_Vtt_Init(Volcengine_vtt_config_t *config) {// 管道配置audio_pipeline_cfg_t pipeline_cfg = DEFAULT_AUDIO_PIPELINE_CONFIG();Volcengine_vtt_t *vt…

【从计算机的发展角度理解编程语言】C、CPP、Java、Python,是偶然还是应时代的产物?

参考目录 前言什么是"computer"?计算机的大致发展历程计算机系统结构阶段(1946~1981)计算机网络和视窗阶段(1982~2007)复杂信息系统阶段(2008~today)人工智能阶段 越新的语言是越好的吗、越值得学习吗&#xff1f; 前言 最近读了 《Python语言程序设计基础》 这本书…

数据结构与算法学习day21-回溯法

一、组合 1.题目 . - 力扣&#xff08;LeetCode&#xff09; 2思路 把组合问题抽象成树形结构&#xff08;N叉树&#xff09; 每次从集合中选取元素&#xff0c;可选择的范围随着选择的进行而收缩&#xff0c;调整可选择的范围。 图中可以发现n相当于树的宽度&#xff0c…

[Linux]进程控制详解

1.创建进程 进程调用fork,当控制转移到内核中的fork代码后&#xff0c;内核做&#xff1a; ● 分配新的内存块和内核数据结构给子进程 ● 将父进程部分数据结构内容拷贝至子进程 ● 添加子进程到系统进程列表当中 ● fork返回&#xff0c;开始调度器调度 这个前面提到过&#…

c++基础入门三

文章目录 C基础入门(三)auto关键字auto简介使用细则一、可以和指针联合使用二、在一行定义多个变量 不能使用场景一、不能作为函数的参数二、不能用来声明数组 基于for的循环使用条件 指针空值nullptr C基础入门(三) 回顾上集&#xff0c;我们介绍了C的函数重载&#xff0c;引…

JAVA并发编程系列之Semaphore信号量剖析

腾讯T2面试&#xff0c;现场限时3分钟限最多20行代码&#xff0c;模拟地铁口安检进站。其中安检入口10个&#xff0c;当前排队人数是100个&#xff0c;每个人安检进站耗时5秒。开始吧! 候选人&#xff0c;心中万马奔腾&#xff01;&#xff01;&#xff01;吐了一口82年老血&am…

电池管理仓的拆解

拆解视频里面可以学习到大厂的设计思想和创意&#xff0c;接触到比较行业化的设计方案&#xff0c;从而提升设计电路的水平。 电池仓&#xff1a; 电池管家的芯片用的就是前段时间了解到的STM32G030C8T6&#xff0c;便宜好用的典范&#xff1a; 弧形走线较为推荐&#xff1a; …

C++初阶学习——探索STL奥秘——标准库中的queue与stack

1、适配器模式 STL 中的适配器可以分为三类: 从应用角度出发 容器适配器 container adapters 迭代器适配器 iterator adapters 仿函数适配器 functor adapters 其中&#xff0c;容器适配器可修改底层为指定容器 如由 vector 构成的栈、由 list 构成的队列 迭代器适配器…

sqli-labs靶场搭建

下载了一个phpstudy进行搭靶场搭建 然后打开phpstudy安装好php,mysql等环境 正式sqli-labs靶场搭建 第一步&#xff1a;下载源码&#xff1a;https://codeload.github.com/Audi-1/sqli-labs/zip/master 解压后放进网站根目录&#xff0c;进到 sqli-labs的文件夹下&#xff0…

windows C++ 并行编程-异步代理库概述

异步代理库&#xff08;简称代理库&#xff09;提供了一个编程模型&#xff0c;该模型可提高支持并发的应用程序开发的可靠性。 代理库是一个 C 模板库&#xff0c;为粗粒度数据流和管道任务提升了基于角色的编程模型和进程内消息传递。 代理库构建在并发运行时的计划和资源管理…

Windows系统通过部署wsl + Goland进行跨平台开发

1.背景 近期项目中因为用到了 Golang库中的 "log/syslog" 包,而这个包是禁止在windows平台上编译的. 并且在windows环境上开发也会有诸多不便,如执行makefile文件的make命令,本地开发环境中docker,etcd,redis的搭建等等,而这些通过部署wsl去搭建一个linux环境就很可以…

如何使用下拉字段创建WordPress表单(简单方法)

许多网站所有者在收集用户输入时&#xff0c;都会因为表单过长而让用户感到压迫。 下拉列表字段通过提供一个简洁的选项列表&#xff0c;使表单变得更简单。这意味着它们可以提高表单完成率&#xff0c;并改善用户体验。 在本文中&#xff0c;我们将向您展示如何创建带有下拉…

Kubernetes从零到精通(11-CNI网络插件)

Kubernetes网络模型 Kubernetes的网络模型&#xff08;Kubernetes Networking Model&#xff09;旨在提供跨所有节点、Pod和服务的统一网络连接。它的核心理念是通过统一的网络通信规则&#xff0c;保证集群中的所有组件能够顺畅地相互通信。Kubernetes网络模型主要有以下几个关…

专业学习|随机规划概观(性质、针对问题与分类)

一、随机规划概观 随机规划&#xff08;Stochastic Programming&#xff09;是一种用于处理决策问题中的不确定性的优化方法。它能够在决策过程中考虑到未来的不确定性&#xff0c;从而帮助找到在不同情境下都能较好表现的解决方案。以下是随机规划能解决的一些主要问题以及它的…

阿里巴巴搜索API返回值:电商市场竞争的新武器含

阿里巴巴搜索API返回值在电商市场竞争中扮演着至关重要的角色&#xff0c;它为企业提供了深入了解市场、分析竞争对手的宝贵资源。以下是对阿里巴巴搜索API返回值及其在电商市场竞争中应用的详细解析&#xff0c;并附上示例代码。 一、阿里巴巴搜索API返回值概述 阿里巴巴搜索…

超大酒店司机收布草-酒店分层管理--酒店布草洗涤

一、大酒店布草分层管理 1. 提高效率 - 对布草进行分层&#xff0c;可以更有针对性地安排收集和分发流程&#xff0c;减少混乱和等待时间&#xff0c;提高整体运营效率。 2. 质量控制 - 不同层级的布草可能有不同的质量标准和使用场景。分层管理有助于确保每个层级的…

2024年第五届“华数杯”全国大学生数学建模竞赛 A题详细思路+详细matlab代码

没有更新完之前,专栏价格为59,更新完毕之后恢复到99. 专栏内包含2024年所有数学建模比赛思路和代码,有些重要比赛着重更新(华数杯、国赛、美赛),小比赛可能会有chatgpt4更新,只需订阅一次。有些文章没有完整代码,请到专栏内查找最新代码和思路。如果比赛结束后没有更新…

Web后端开发技术:RESTful 架构详解

RESTful 是一种基于 REST&#xff08;表述性状态转移&#xff0c;Representational State Transfer&#xff09;架构风格的 API 设计方式&#xff0c;通常用于构建分布式系统&#xff0c;特别是在 Web 应用开发中广泛应用。REST 是一种轻量级的架构模式&#xff0c;利用标准的 …