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

函数支持多通道图像。每个通道独立处理。

函数原型

cpp 复制代码
void cv::accumulateSquare	
(
	InputArray 	src,
	InputOutputArray 	dst,
	InputArray 	mask = noArray() 
)	

参数

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

代码示例

cpp 复制代码
#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;
}

运行结果

相关推荐
武子康34 分钟前
150毫秒和2400毫秒:同一 Agent 任务的两种延迟
人工智能·后端·agent
暖心hebbie设计学习41 分钟前
GitHub 热榜周报(10.19)|5 个把 AI 装回本地的开源项目:多 agent 控制台、本地语音、节点式生成(含技术看点)
人工智能·github
猪脚踏浪1 小时前
open webui 在docker容器里跑,并且是在内网断绝互联网的环境下。生成ppt
人工智能
海边捡石子1 小时前
FreeSWITCH 入门:把电话系统接入语音客服机器人
人工智能·后端
桃西西呀1 小时前
我把网关限流配置成每秒 100 请求,大促一来照样被打挂,还把别人也拖垮了
人工智能·llm·ai编程
武子康1 小时前
Agent 偏好记忆怎样确认写入:范围、版本与撤销的一个最小例
人工智能·后端·agent
王中阳Go2 小时前
质保期第 90 天我翻了一遍日志目录:交付后真正会坏的 3 处
人工智能·后端·agent
桃西西呀2 小时前
我把整本接口文档塞进 system prompt,前 3 轮答得准,第 8 轮开始胡说,账单还翻了 4 倍
人工智能·llm·ai编程
天天代码码天天2 小时前
给孩子打印一本“数字连点画”!连出小鱼、火箭,画完还能涂色
人工智能
SL_staff3 小时前
规则联动:给工厂装上‘自动化神经反射弧’——JVS·物联网平台规则引擎实战教程
java·人工智能·物联网