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

news/2024/9/19 4:54:20 标签: opencv, 目标跟踪, 人工智能
  • 操作系统: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.niftyadmin.cn/n/5665009.html

相关文章

弹性负载均衡ELB 详解和设置方法

一、弹性负载均衡ELB 详解 1. 定义与概念 弹性负载均衡&#xff08;Elastic Load Balancing&#xff0c;简称ELB&#xff09;是一种将访问流量自动分发到多台云服务器的流量分发控制服务。它通过在多个后端服务器之间均衡分配请求&#xff0c;提高应用程序的可用性、可扩展性…

在 Linux 系统中目录架构说明

在 Linux 系统中&#xff0c;根目录&#xff08;/&#xff09;是整个文件系统的起点&#xff0c;其下有许多重要的目录&#xff0c;以下是对一些主要目录的说明&#xff1a; 一、/bin 存放着最常用的二进制可执行命令&#xff0c;例如 ls、cat、cp、mv 等。普通用户和超级用户…

24年蓝桥杯及攻防世界赛题-MISC-2

11 Railfence fliglifcpooaae_hgggrnee_o{cr} 随波逐流编码工具 分为5栏时&#xff0c;解密结果为:flag{railfence_cipher_gogogo} 12 Caesar rxms{kag_tmhq_xqmdzqp_omqemd_qzodkbfuaz} mode1 #12: flag{you_have_learned_caesar_encryption} 随波逐流编码工具 13 base64…

计算机视觉——基于OpenCV和Python进行模板匹配

模板匹配是计算机视觉中的一项基本技术&#xff0c;它用于在较大的图像中寻找与给定模板图像最匹配的区域。在OpenCV中&#xff0c;这一过程可以通过matchTemplate函数轻松实现。本文将详细介绍模板匹配的原理、方法以及如何在Python中使用OpenCV进行模板匹配。 模板匹配原理 …

ArcGIS Pro SDK (十五)共享

ArcGIS Pro SDK (十五)共享 文章目录 ArcGIS Pro SDK (十五)共享1 ArcGIS 项目管理器:获取当前活动门户2 ArcGIS 项目管理器:获取所有门户的列表3 ArcGIS 项目管理器:将门户添加到门户列表4 ArcGIS 项目管理器:获取门户并登录,将其设置为活动状态5 ArcGIS 程序管理器:…

【SQLite数据库常规使用命令】

之前在做围绕数据库相关的一些小工具的时候&#xff0c;想找一款数据库作为小工具的资料库。需求是&#xff1a;不用复杂的安装&#xff0c;支持简单SQL&#xff0c;空间占用小&#xff0c;操作简单等等。 结合着之前接触到的一些研发同事做的产品的使用经验&#xff0c;我想到…

分布式事务学习笔记(五)微服务实现Seata TCC模式、TC服务器高可用异地容灾

文章目录 前言6 Seata TCC 模式6.1 实现原理6.2 优缺点6.3 空回滚和业务悬挂6.3.1 空回滚6.3.2 业务悬挂 6.4 微服务实现TCC模式6.4.1 思路分析6.4.2 声明TCC接口6.4.3 编写实现类6.4.4 Controller类调用TCC接口6.4.5 修改配置文件application.yml6.4.6 重启微服务并测试 7 TC服…

确保在AWS上的资源安全:构建坚不可摧的云安全防线

在数字化转型的浪潮中&#xff0c;企业纷纷将业务迁移到云端&#xff0c;以提高灵活性和效率。然而&#xff0c;随着云环境的复杂性增加&#xff0c;确保资源的安全性成为了企业面临的重要挑战。Amazon Web Services&#xff08;AWS&#xff09;作为全球领先的云服务提供商&…