OpenCV CUDA模块中矩阵操作------矩阵元素求和

news2025/5/17 3:59:06
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

在OpenCV的CUDA模块中,矩阵元素求和类函数主要用于计算矩阵元素的总和、绝对值之和以及平方和。这些操作对于图像处理中的特征提取、质量评估等任务非常有用。

主要函数

矩阵所有元素的绝对值之和函数:absSum

原型

Scalar cv::cuda::absSum
(
	InputArray src,
	InputArray mask=noArray()
)

描述

返回矩阵所有元素的绝对值之和。

参数
  • src: 输入矩阵(通常是cv::cuda::GpuMat)。
  • mask: 可选掩码,指定哪些元素参与计算,默认为无掩码。
返回值

返回一个Scalar类型的对象,包含每个通道的绝对值之和。

矩阵所有元素的绝对值之和函数:calcAbsSum

原型
void cv::cuda::calcAbsSum
(
	InputArray src,
	OutputArray dst,
	InputArray mask=noArray(), 
	Stream& stream=Stream::Null()
)
描述

同cv::cuda::absSum,但结果存储在一个输出数组中。

参数
  • src: 输入矩阵。
  • dst: 输出标量,存储计算结果。
  • mask: 可选掩码。
  • stream: CUDA流用于异步执行(可选)。

计算所有元素的平方和函数sqrSum

原型
Scalar cv::cuda::sqrSum
(
	InputArray src,
	InputArray mask=noArray()
)

描述

返回矩阵所有元素的平方和。

参数

  • src: 输入矩阵。
  • mask: 可选掩码。
返回值

返回一个Scalar类型的对象,包含每个通道的平方和。

计算所有元素的平方和函数calcSqrSum

原型
void cv::cuda::calcSqrSum
(
	InputArray src, 
	OutputArray dst, 
	InputArray mask=noArray(), 
	Stream& stream=Stream::Null()
)
描述

同cv::cuda::sqrSum,但结果存储在一个输出数组中。

参数
  • src: 输入矩阵。
  • dst: 输出标量,存储计算结果。
  • mask: 可选掩码。
  • stream: CUDA流用于异步执行(可选)。

计算矩阵所有元素的总和函数sum

原型
Scalar cv::cuda::sum
(
	InputArray src, 
	InputArray mask=noArray()
)
描述

返回矩阵所有元素的总和。

参数
  • src: 输入矩阵。
  • mask: 可选掩码。
返回值

返回一个Scalar类型的对象,包含每个通道的总和。

计算矩阵所有元素的总和函数calcSum

原型
void cv::cuda::calcSum
(
	InputArray src, 
	OutputArray dst, 
	InputArray mask=noArray(), 
	Stream& stream=Stream::Null()
)
描述

同cv::cuda::sum,但结果存储在一个输出数组中。

参数

  • src: 输入矩阵。
  • dst: 输出标量,存储计算结果。
  • mask: 可选掩码。
  • stream: CUDA流用于异步执行(可选)。

代码示例

#include <iostream>
#include <opencv2/cudaarithm.hpp>
#include <opencv2/opencv.hpp>

int main()
{
    // 创建一个测试矩阵(4x4浮点型)
    cv::Mat h_mat = ( cv::Mat_< float >( 4, 4 ) << 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16 );

    // 将矩阵上传到GPU
    cv::cuda::GpuMat d_mat;
    d_mat.upload( h_mat );

    // 计算绝对值之和
    cv::Scalar abs_sum = cv::cuda::absSum( d_mat );
    std::cout << "Absolute sum: " << abs_sum[ 0 ] << "\n";

    // 计算平方和
    cv::Scalar sqr_sum = cv::cuda::sqrSum( d_mat );
    std::cout << "Squared sum: " << sqr_sum[ 0 ] << "\n";

    // 计算总和
    cv::Scalar total_sum = cv::cuda::sum( d_mat );
    std::cout << "Total sum: " << total_sum[ 0 ] << "\n";

    // 使用 calcAbsSum 和其他类似函数
    cv::cuda::GpuMat d_abs_sum, d_sqr_sum, d_total_sum;
    cv::cuda::calcAbsSum( d_mat, d_abs_sum );
    cv::cuda::calcSqrSum( d_mat, d_sqr_sum );
    cv::cuda::calcSum( d_mat, d_total_sum );

    // 下载结果回主机
    double host_abs_sum, host_sqr_sum, host_total_sum;
    d_abs_sum.download( cv::Mat( 1, 1, CV_64F, &host_abs_sum ) );
    d_sqr_sum.download( cv::Mat( 1, 1, CV_64F, &host_sqr_sum ) );
    d_total_sum.download( cv::Mat( 1, 1, CV_64F, &host_total_sum ) );

    std::cout << "Downloaded absolute sum: " << host_abs_sum << "\n";
    std::cout << "Downloaded squared sum: " << host_sqr_sum << "\n";
    std::cout << "Downloaded total sum: " << host_total_sum << "\n";

    return 0;
}

运行结果

Absolute sum: 136
Squared sum: 1496
Total sum: -8
Downloaded absolute sum: 136
Downloaded squared sum: 1496
Downloaded total sum: -8

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

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

相关文章

使用Scrapeless Scraping Browser的自动化和网页抓取最佳实践

引言&#xff1a;人工智能时代浏览器自动化和数据收集的新范式 随着生成性人工智能、人工智能代理和数据密集型应用程序的快速崛起&#xff0c;浏览器正在从传统的“用户互动工具”演变为智能系统的“数据执行引擎”。在这一新范式中&#xff0c;许多任务不再依赖单一的API端点…

java数组题(5)

&#xff08;1&#xff09;&#xff1a; 思路&#xff1a; 1.首先要对数组nums排序&#xff0c;这样两数之间的差距最小。 2.题目要求我们通过最多 k 次递增操作&#xff0c;使数组中某个元素的频数&#xff08;出现次数&#xff09;最大化。经过上面的排序&#xff0c;最大数…

物联网无线传感方向专业词汇解释

涡旋电磁波(VEMW)&#xff1a;一种具有轨道角动量的电磁波&#xff0c;其特性在于能够在传播过程中携带额外的相位信息&#xff0c;从而增加通信系统的容量和灵活性。波前&#xff1a;波动传播过程中&#xff0c;同一时刻振动相位相同的所有点构成的几何曲面&#xff0c;代表波…

Maven 插件参数注入与Mojo开发详解

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

2024年全国青少年信息素养大赛——算法创意实践挑战赛复赛真题(小学组)——玫瑰花地的面积

2024年全国青少年信息素养大赛——算法创意实践挑战赛复赛真题(小学组)——玫瑰花地的面积 上面试卷可点下方&#xff0c;支持在线编程&#xff0c;在线测评&#xff5e; 2024年全国信息素养大赛 算法创意实践挑战赛复赛(小学组)_c_少儿编程题库学习中心-嗨信奥 5月17号 全国青…

【补充笔记】修复“NameError: name ‘ZhNormalizer‘ is not defined”的直接方法

#工作记录 一、问题描述 在运行CosyVoice_For_Windows项目时&#xff0c;出现以下报错&#xff1a; File "F:\PythonProjects\CosyVoice_For_Windows\cosyvoice\cli\frontend.py", line 74, in __init__ self.zh_tn_model ZhNormalizer(remove_erhuaFalse, fu…

预训练模型实战手册:用BERT/GPT-2微调实现10倍效率提升,Hugging Face生态下的迁移学习全链路实践

更多AI大模型应用开发学习内容&#xff0c;尽在聚客AI学院。 一. 预训练模型&#xff08;PTM&#xff09;核心概念 1.1 什么是预训练模型&#xff1f; 预训练模型&#xff08;Pre-trained Model, PTM&#xff09;是在大规模通用数据上预先训练的模型&#xff0c;通过自监督学…

mac docker弹窗提示Docker 启动没有响应

一、原因分析 这台笔记电脑是Mac M3操作系统,安装Docker之后,Docker应用程序一直启动不起来。 二、解决办法 sudo rm /Library/PrivilegedHelperTools/com.docker.vmnetd sudo cp /Applications/Docker.app/Contents/Library/LaunchServices/com.docker.vmnetd /Library/Pri…

Ubuntu 22.04搭建OpenStreeMap地址解析服务(保姆级教程)

1.数据准备 1.1.全球数据 下载地址&#xff1a;https://planet.openstreetmap.org/ 1.2.特定区域的数据 下载地址&#xff1a;Geofabrik Download Server 2.安装必要的软件包 2.1.更新系统软件包 sudo apt updatesudo apt upgrade 2.2.安装所需要的软件包 执行下面的命…

sqli—labs第五关——报错注入

一&#xff1a;判断输入类型 首先测试 ?id1 回显You are in... 渐进测试?id1 报错分析&#xff1a; 出现引号提示——“”&#xff0c;可能是字符型 继续测试?id1--&#xff08;用注释符修复了语法错误&#xff09; 回显You are in... 说明就是字符型 因为能用注释符…

从海洋生物找灵感:造个机器人RoboPteropod,它能在水下干啥?

大家好&#xff01;在如今人类对水下环境探索不断深入的时代&#xff0c;从水下考古到珊瑚礁考察&#xff0c;各种任务都离不开水下机器人的助力。但传统水下机器人尺寸较大&#xff0c;在狭窄的水下空间施展不开。今天&#xff0c;我们就来认识一款受海洋小生物启发而设计的仿…

FastAPI系列16:从API文档到TypeScript 前端客户端(SDKs)

从API文档到TypeScript 前端客户端&#xff08;SDKs&#xff09; 快速入门生成一个TypeScript 客户端测试生成的TypeScript 客户端 API标签与客户端生成生成带有标签的 TypeScript 客户端 自定义Operation ID使用自定义Operation ID生成TypeScript客户端 在 FastAPI系列15&…

CS016-2-unity ecs

目录 【23】射击改进 【24】僵尸生成器 ​编辑【25】随机行走 【27】射击光效 【23】射击改进 a. 当距离目标太远的时候&#xff0c;要继续移动。而当距离目标到达攻击距离之后&#xff0c;则停止移动。 上图中的if&#xff1a;判断自身和目标的距离是否大于攻击距离&#…

CST软件对OPERACST软件联合仿真汽车无线充电站对人体的影响

上海又收紧了新能源车的免费上牌政策。所以年前一些伙伴和我探讨过买新能源汽车的问题&#xff0c;小伙伴们基本纠结的点是买插电还是纯电&#xff1f;我个人是很抗拒新能源车的&#xff0c;也开过坐过。个人有几个观点&#xff1a; 溢价过高&#xff0c;不保值。实际并不环保…

华为2024年报:鸿蒙生态正在取得历史性突破

华为于2025年03月31日发布2024年年度报告。报告显示&#xff0c;华为经营结果符合预期&#xff0c;实现全球销售收入 8,621 亿元人民币&#xff0c;净利润 626 亿元人民币。2024 年研发投入达到 1,797 亿元人民币&#xff0c;约占全年收入的 20.8%&#xff0c;近十年累计投入的…

LabVIEW的CAN通讯测试程序

该程序是基于 NI LabVIEW 平台开发的 CAN&#xff08;Controller Area Network&#xff0c;控制器局域网&#xff09;通讯测试程序。主要功能是对 CAN 通讯过程进行模拟、数据传输与验证&#xff0c;确保 CAN 通讯的正常运行和数据的准确传输。 程序详细说明 接口选择&#xff…

Spring Boot 使用Itext绘制并导出PDF

最终效果 其实可以加分页&#xff0c;但是没有那么精细的需求&#xff0c;所以我最后就没有加&#xff0c;有兴趣的可以尝试下。 项目依赖 <!-- Spring Boot 版本有点老 --> <spring-boot.version>2.3.12.RELEASE</spring-boot.version><!-- 依…

【测试】BUG

目录 1、描述BUG的要素&#xff1a; 2、BUG的级别 3、BUG的状态的流转 4、与开发产⽣争执怎么办&#xff08;⾼频考题&#xff09; 什么是BUG&#xff1f;&#xff1f;&#xff1f; 程序与规格说明之间的不匹配才是错误 1、描述BUG的要素&#xff1a; 问题出现的版本、问…

Mac 环境下 JDK 版本切换全指南

概要 在 macOS 上安装了多个 JDK 后&#xff0c;可以通过系统自带的 /usr/libexec/java_home 工具来查询并切换不同版本的 Java。只需在终端中执行 /usr/libexec/java_home -V 列出所有已安装的 JDK&#xff0c;然后将你想使用的版本路径赋值给环境变量 JAVA_HOME&#xff0c;…

Pillow 移除或更改了 FreeTypeFont.getsize() 方法

w, h self.font.getsize(label) # text width, height AttributeError: FreeTypeFont object has no attribute getsize 在Pillow 项目的变更日志里可以查到哪个版本移除了 getsize() 方法&#xff0c;Pillow仓库&#xff1a; Releases python-pillow/Pillow GitHub 因为…