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

  • 操作系统: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 );// 将矩阵上传到GPUcv::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.mzph.cn/pingmian/81002.shtml

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

相关文章

给视频加一个动画。

为什么要给视频加一个动画&#xff1f; 很完整的视频也就是从短动画开始的。遮盖住LOG用。 C:\Users\Sam\Desktop\desktop\startup\workpython\ocr Lottie.py import subprocessdef run_ffmpeg(cmd):print("Running:", " ".join(cmd))subprocess.run(cm…

15:00开始面试,15:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到4月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

使用命令行拉取 Git 仓库

1. 克隆远程仓库&#xff08;首次获取&#xff09; # 克隆仓库到当前目录&#xff08;默认使用 HTTPS 协议&#xff09; git clone https://github.com/用户名/仓库名.git# 克隆仓库到指定目录 git clone https://github.com/用户名/仓库名.git 自定义目录名# 使用 SSH 协议克隆…

如何禁止chrome自动更新

百度了一下 下面这个方法实测有效 目录 1、WINR 输入 services.msc 2、在Services弹窗中找到下面两个service并disable 3、验证是否禁止更新成功&#xff1a; 1、WINR 输入 services.msc 2、在Services弹窗中找到下面两个service并disable GoogleUpdater InternalService…

数据库事务以及JDBC实现事务

一、数据库事务 数据库事务&#xff08;Database Transaction&#xff09;是数据库管理系统中的一个核心概念&#xff0c;它代表一组操作的集合&#xff0c;这些操作要么全部执行成功&#xff0c;要么全部不执行&#xff0c;即操作数据的最小执行单元&#xff0c;保证数据库的…

【vue】【环境配置】项目无法npm run serve,显示node版本过低

解决方案&#xff1a;安装高版本node&#xff0c;并且启用高版本node 步骤&#xff1a; 1、查看当前版本 node -v2、配置nvm下载镜像源 1&#xff09;查看配置文件位置 npm root2&#xff09;找到settings.txt文件 修改镜像源为&#xff1a; node_mirror: https://npmmirro…

WPF之INotifyPropertyChanged实现

文章目录 引言INotifyPropertyChanged接口基础接口定义工作原理 基本实现方式标准实现示例CallerMemberName特性 高级实现技术基类实现通知多个属性变化使用PropertyChanging事件 MVVM框架中的实现MVVM模式简介MVVM框架中的实现Prism框架MVVM Light框架自定义MVVM基类 性能优化…

【MCP教程系列】SpringBoot 搭建基于 Spring AI 的 SSE 模式 MCP 服务

原文地址&#xff1a;https://developer.aliyun.com/article/1662946 在当今快速发展的AI技术背景下&#xff0c;如何高效地集成模型能力成为开发者关注的重点。本文将手把手教你如何基于 Spring AI 搭建支持 SSE&#xff08;Server-Sent Events&#xff09;模式的 MCP 服务 相…

springboot集成langchain4j实现票务助手实战

前言 看此篇的前置知识为langchain4j整合springboot&#xff0c;以及springboot集成langchain4j记忆对话。 Function-Calls介绍 langchain4j 中的 Function Calls&#xff08;函数调用&#xff09;是一种让大语言模型&#xff08;LLM&#xff09;与外部工具&#xff08;如 A…

MySQL-数据库分布式XA事务

准备 innodb存储引擎开启支持分布式事务 set global innodb_support_axonMySQL数据库XA事务的SQL语法如下&#xff1a; XA {START| BEGIN} xid {JOIN | RESUME} XA END xid {SUSPEND [ FOR MIGRATE]} XA PREPARE xid XA COMMIT xid [ONE PHASE] XA ROLLBACK xid XA RECOVER 完…

SAP 运维-冷门问题解决办法

1.SAP Fiori帮助菜单链接如何配置&#xff1f; 答&#xff1a; 执行事务代码HELP_CONFIG&#xff0c;选择对应的Fiori部署模式&#xff0c;配置帮助菜单下的URL链接。 检查配置的帮助菜单&#xff0c;执行事务代码/N//UI2/FLP_CUS_CONF 或者SR13进行查看配置状态与修改。

新型智慧园区技术架构深度解析:数字孪生与零碳科技的融合实践

&#x1f3ed;在杭州亚运村零碳园区&#xff0c;光伏板与氢燃料大巴构成的能源网络&#xff0c;正通过数字孪生技术实现智能调度。这不仅是格力电器与龙源电力在新能源领域的创新实践&#xff0c;更是智慧园区4.0时代的标杆案例。当AI算法开始接管能源调度&#xff0c;当BIM建模…

Java转Go日记(三十六):简单的分布式

1.1.1. 简单的分布式server 目前分布式系统已经很流行了&#xff0c;一些开源框架也被广泛应用&#xff0c;如dubbo、Motan等。对于一个分布式服务&#xff0c;最基本的一项功能就是服务的注册和发现&#xff0c;而利用zk的EPHEMERAL节点则可以很方便的实现该功能。EPHEMERAL节…

机器学习笔记——特征工程

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本笔记介绍机器学习中常见的特征工程方法、正则化方法和简要介绍强化学习。 文章目录 特征工程&#xff08;Fzeature Engineering&#xff09;1. 特征提取&#xff…

在 Ubuntu 20.04.6 LTS 中将 SCons 从 3.1.2 升级到 4.9.1

在 Ubuntu 20.04.6 LTS 中将 SCons 从 3.1.2 升级到 4.9.1&#xff0c;可以通过以下步骤完成&#xff1a; 方法 1&#xff1a;使用 pip 安装&#xff08;推荐&#xff09; 步骤 1&#xff1a;卸载旧版本 SCons # 如果通过 apt 安装的旧版本&#xff0c;先卸载 sudo apt remov…

LeetCode热题100--234.回文链表--简单

1. 题目 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xf…

【markdown】介绍如何在markdown中绘制流程图

在 Markdown 中编写流程图主要通过 ​​Mermaid 语法​​实现&#xff08;多数平台如 GitHub、VS Code、Typora 已原生支持&#xff09;。以下是详细方法&#xff1a; 1. 基础流程图​​ 语法结构 用 mermaid 包裹代码块&#xff0c;指定方向后定义节点和连接线&#xff1a…

Java中使用自定义序列化器:自动添加View字段的实现与应用

Java 中 BigDecimal 序列化器:自动添加 View 返回字段的实现与应用 在 Java 开发过程中,数据的序列化与反序列化是非常重要的环节。当我们处理数值类型数据,特别是BigDecimal类型时,有时需要在序列化输出中添加额外的视图字段,以满足前端展示或者特定业务需求。本文将通过…

Java类一文分解:JavaBean,工具类,测试类的深度剖析

解锁Java类的神秘面纱&#xff1a;从JavaBean到测试类的深度剖析 前言一、JavaBean 类&#xff1a;数据的守护者&#xff08;一&#xff09;JavaBean 类是什么&#xff08;二&#xff09;JavaBean 类的特征&#xff08;三&#xff09;JavaBean 类的使用场景&#xff08;四&…

机器学习-- 线性回归、逻辑回归

线性回归 线性回归是一种统计方法,用于发现变量之间的关系。在机器学习背景下,线性回归可找出特征(Feature)与标签(Lable)之间的关系。 例如,假设我们想要根据汽车的重量预测汽车的每加仑汽油行驶里程(mpg),并且我们有以下数据集: 线性回归方程 Linear regressi…