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

OpenCV CUDA模块设备层-----双曲正切函数tanh()

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

算法描述

OpenCV 的CUDA模块(cudev) 中的一个设备函数,用于在 GPU 上对uchar4类型的向量(如 RGBA 像素)进行双曲正切(hyperbolic tangent)运算,并返回一个float4类型的结果。

函数原型

__device__ __forceinline__ float4 cv::cudev::tanh(const uchar4 &a)

参数

  • const uchar4 &a 输入参数为一个4通道的无符号字符向量(如 RGBA 像素)

代码


#include <opencv2/opencv.hpp>
#include <opencv2/cudev/common.hpp>// CUDA核函数
__global__ void apply_tanh_kernel(uchar4* src, float4* dst, int width, int height) {int x = blockIdx.x * blockDim.x + threadIdx.x;int y = blockIdx.y * blockDim.y + threadIdx.y;if (x < width && y < height) {int idx = y * width + x;dst[idx] = cv::cudev::tanh(src[idx]);}
}int main() {// 创建测试图像(256x256 RGBA)cv::Mat src(256, 256, CV_8UC4);cv::randu(src, cv::Scalar(0, 0, 0, 0), cv::Scalar(255, 255, 255, 255));// 分配设备内存cv::cuda::GpuMat d_src, d_dst;d_src.upload(src);d_dst.create(src.size(), CV_32FC4);// 调用核函数dim3 block(16, 16);dim3 grid((src.cols + block.x - 1) / block.x, (src.rows + block.y - 1) / block.y);apply_tanh_kernel<<<grid, block>>>(d_src.ptr<uchar4>(), d_dst.ptr<float4>(), src.cols, src.rows);// 将结果下载回主机cv::Mat dst;d_dst.download(dst);// 显示结果(只显示第一个通道作为示例)cv::imshow("Original", src);cv::Mat channels[4];cv::split(dst, channels);cv::imshow("Tanh Result", channels[0]);cv::waitKey(0);return 0;
}

运行结果

在这里插入图片描述

http://www.dtcms.com/a/263595.html

相关文章:

  • IDEA相关配置记录
  • 基于Python的GIS-RS多源数据处理(TIF/SHP/NC/...)【20250630】
  • 国产化替换中政务行业通用的解决方案是什么?需要注意的事项有哪些?
  • 03认证原理自定义认证添加认证验证码
  • Android阴影效果的艺术与实现:从入门到精通
  • GO 语言学习 之 Map
  • 38.docker启动python解释器,pycharm通过SSH服务直连
  • DBeaver 设置阿里云中央仓库地址的操作步骤
  • AlpineLinux安装docker
  • 我认知的AI宇宙系列第三期
  • 车载Tier1 supplier梳理
  • 使用 collected 向 TDengine 写入数据
  • 论文中用matplotlib画的图,如何保持大小一致。
  • OpenWrt | 使用 Docker 运行 iperf3
  • 前后端Dockerfile
  • 2025年 UI 自动化框架使用排行
  • GeoTools 结合 OpenLayers 实现属性查询(二)
  • 嵌入式原理与应用篇---常见基础知识(10)
  • 【软考高项论文】论信息系统项目的进度管理
  • Spring-事务和事务传播机制
  • DFMEA检查表模板下载
  • 简单的 PyTorch 示例,可视化和解释 weight decay 的作用
  • 云上攻防—Docker安全容器逃逸特权模式危险挂载
  • 【C++】简单学——模板初阶
  • tauri v2 开源项目学习(一)
  • PSQL 处理 BLOB 类型数据问题
  • 华为云Flexus+DeepSeek征文 | ​​华为云ModelArts Studio大模型与企业AI会议纪要场景的对接方案
  • 数据库事务全面指南:概念、语法、机制与最佳实践
  • C++ 快速回顾(五)
  • 【冷知识】Spring Boot 配置文件外置