当前位置: 首页 > 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.lqws.cn/news/592651.html

相关文章:

  • Terraform Helm:微服务基础设施即代码
  • 《UE5_C++多人TPS完整教程》学习笔记39 ——《P40 远程过程调用(Remote Procedure Calls)》
  • LabVIEW自动扶梯振动监测
  • RabbitMQ简单消息发送
  • Node.js与Express框架的深度整合
  • beego打包发布到Centos系统及国产麒麟系统完整教程
  • react-数据Mock实现——json-server
  • 飞算 JavaAI 开发助手:深度学习驱动下的 Java 全链路智能开发新范式
  • 发票PDF处理工具,智能识别合并一步到位
  • Foundation 5 安装使用教程
  • 【Unity实战】UI按钮回调管理:职责分离与持久化策略
  • 基于 Vue + RuoYi 架构设计的商城Web/小程序实训课程
  • 网络基础知识与代理配置
  • Java 大视界 -- Java 大数据在智能交通共享单车智能调度与停放管理中的应用(329)
  • 数字雨动画背景
  • 深入剖析AI大模型:TensorFlow
  • 浅谈「线性代数的本质」 - 系列合集
  • 系统思考力量与实践
  • 从数据资产识别与防泄密看零信任产品
  • 什么叫单通
  • .Net 使用OpenAI开源离线语音识别模型Whisper
  • CppCon 2018 学习:EFFECTIVE REPLACEMENT OF DYNAMIC POLYMORPHISM WITH std::variant
  • Helix Toolkit 在 WPF 中加载带贴图素材的模型
  • 《全程软件测试》第1章
  • 坚石ET ARM加密狗复制模拟介绍
  • 23.安卓逆向2-r0capture搭配Wireshark方式抓包
  • Nuxt 3 中实现跨组件通信方式总结:使用 Pinia、Provide/Inject 或 Props
  • 设计模式-命令模式
  • 昆泰芯3D霍尔磁传感器芯片在汽车零部件中的应用
  • OpenCV-Python Tutorial : A Candy from Official Main Page(二)