当前位置: 首页 > ops >正文

OpenCV CUDA模块中矩阵操作------分布统计类

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

算法描述

在 OpenCV 的 CUDA 模块中,meanStdDev 函数用于计算矩阵的平均值(Mean)和标准差(StdDev)。这些函数支持同步和异步调用,并且可以接受一个可选的掩码参数来限制计算范围。

函数原型

  1. 同步版本
 void cv::cuda::meanStdDev(InputArray src, Scalar &mean, Scalar &stddev, InputArray mask)

计算带掩码的 GPU 矩阵的平均值和标准差。

 void cv::cuda::meanStdDev(InputArray mtx, Scalar &mean, Scalar &stddev)

计算无掩码的 GPU 矩阵的平均值和标准差。

  1. 异步版本
void cv::cuda::meanStdDev(InputArray src, OutputArray dst, InputArray mask, Stream &stream=Stream::Null())

异步计算带掩码的 GPU 矩阵的平均值和标准差,结果存储在 OutputArray 中。

  void cv::cuda::meanStdDev(InputArray mtx, OutputArray dst, Stream &stream=Stream::Null())

异步计算无掩码的 GPU 矩阵的平均值和标准差,结果存储在 OutputArray 中。

参数

  • InputArray src/mtx: 输入的 GPU 矩阵。
  • Scalar &mean/stddev: 输出的平均值和标准差。
  • InputArray mask: 可选的掩码矩阵,指定哪些元素参与计算,默认为整个矩阵。
  • OutputArray dst: 输出的结果矩阵,通常是一个包含两个 cv::Scalar 值的 GpuMat。
  • Stream &stream: 可选的 CUDA 流对象,用于异步执行,默认使用主线程流。

示例代码

下面是一个完整的 C++ 示例代码,演示了如何使用上述四个函数:

#include <opencv2/opencv.hpp>
#include <opencv2/cudaarithm.hpp>
#include <iostream>int main() {// 创建一个测试矩阵cv::Mat h_mat = (cv::Mat_<float>(3, 3) << 1.0f, 2.0f, 3.0f,4.0f, 5.0f, 6.0f,7.0f, 8.0f, 9.0f);// 创建一个掩码矩阵(仅允许右下角区域参与计算)cv::Mat h_mask = cv::Mat::zeros(h_mat.size(), CV_8UC1);cv::rectangle(h_mask, cv::Rect(2, 2, 1, 1), cv::Scalar(255), cv::FILLED); // 右下角像素// 上传到 GPUcv::cuda::GpuMat d_mat, d_mask;d_mat.upload(h_mat);d_mask.upload(h_mask);// 存储异步结果的 GpuMatcv::cuda::GpuMat d_result;// 创建 CUDA 流cv::cuda::Stream stream;// 同步版本 ————————————————————————————————// 1. 带掩码的 mean 和 stddevcv::Scalar mean, stddev;cv::cuda::meanStdDev(d_mat, mean, stddev, d_mask);std::cout << "Sync Mean with mask: " << mean << std::endl;std::cout << "Sync StdDev with mask: " << stddev << std::endl;// 2. 不带掩码的 mean 和 stddevcv::cuda::meanStdDev(d_mat, mean, stddev);std::cout << "Sync Mean without mask: " << mean << std::endl;std::cout << "Sync StdDev without mask: " << stddev << std::endl;// 异步版本 ————————————————————————————————// 3. 异步:带掩码的 mean 和 stddevcv::cuda::meanStdDev(d_mat, d_result, d_mask, stream);stream.waitForCompletion();cv::Mat host_result;d_result.download(host_result);cv::Scalar async_mean = host_result.at<double>(0, 0);cv::Scalar async_stddev = host_result.at<double>(1, 0);std::cout << "Async Mean with mask: " << async_mean << std::endl;std::cout << "Async StdDev with mask: " << async_stddev << std::endl;// 4. 异步:不带掩码的 mean 和 stddevcv::cuda::meanStdDev(d_mat, d_result, stream);stream.waitForCompletion();d_result.download(host_result);async_mean = host_result.at<double>(0, 0);async_stddev = host_result.at<double>(1, 0);std::cout << "Async Mean without mask: " << async_mean << std::endl;std::cout << "Async StdDev without mask: " << async_stddev << std::endl;return 0;
}

运行结果

Sync Mean with mask: [9, 0, 0, 0]
Sync StdDev with mask: [0, 0, 0, 0]
Sync Mean without mask: [5, 0, 0, 0]
Sync StdDev without mask: [2.58199, 0, 0, 0]
Async Mean with mask: [9, 0, 0, 0]
Async StdDev with mask: [0, 0, 0, 0]
Async Mean without mask: [5, 0, 0, 0]
Async StdDev without mask: [0, 0, 0, 0]
http://www.xdnf.cn/news/6564.html

相关文章:

  • RAG数据处理:PDF/HTML
  • LangFlow技术深度解析:可视化编排LangChain应用的新范式 -(2)流编辑器系统
  • MySQL 8.0 OCP 1Z0-908 131-140题
  • 碰一碰发视频工具应用场景解析与 OEM 贴牌部署注意事项
  • QTreeView设置显示连接线
  • 【Linux 学习计划】-- 权限
  • 【控制波形如何COPY并无痛使用】
  • python中字符串的操作
  • 电动流量调节 V 型球阀:工业流体控制的理想选择-耀圣
  • uv python 卸载
  • python调用金蝶api接口
  • 分布式锁: Redis和ZooKeeper两种分布式锁对比
  • 【时空图神经网络 交通】相关模型2:STSGCN | 时空同步图卷积网络 | 空间相关性,时间相关性,空间-时间异质性
  • Go语言爬虫系列教程 实战项目JS逆向实现CSDN文章导出教程
  • 0-INViT:一个具有不变嵌套视图Transformer的可推广路由问题求解器(code)(未完)
  • 网页工具-OTU/ASV表格物种分类汇总工具
  • Spyglass:跨时钟域同步(同步使能)
  • ubuntu22.04卸载vscode
  • 深度学习中的归一化:提升模型性能的关键因素
  • Service Mesh
  • Linux下可执行程序的生成和运行详解(编译链接汇编图解)
  • 针对大事务问题对业务存储过程改造
  • TLP5814H是一款高度集成的栅极驱动器光电耦合器
  • IntelliJ IDEA打开项目后,目录和文件都不显示,只显示pom.xml,怎样可以再显示出来?
  • 文本分类任务Qwen3-0.6B与Bert:实验见解
  • JavaSwing中的容器之--JScrollPane
  • C++23:ranges::iota、ranges::shift_left和ranges::shift_right详解
  • 在 Neo4j 中实现向量化存储:从文本到高效语义搜索
  • 【爬虫】DrissionPage-4
  • h5,原生html,echarts关系网实现