OpenCV CUDA模块设备层-----反正弦运算函数asin()

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

算法描述

对一个 uchar 类型的像素值(范围 [0, 255]),先归一化到浮点范围 [0.0, 1.0],然后计算其反正弦值 asin(x),最终返回一个 float1 类型的结果。

函数原型

__device__ __forceinline__ float1 cv::cudev::asin 	( 	const uchar1 &  	a	) 	

参数

  • uchar1 CUDA 向量类型,表示一个单通道的 8 位无符号整型(等价于 unsigned char 或 uint8_t)。

代码示例


#include <opencv2/opencv.hpp>
#include <opencv2/cudev/common.hpp>
#include <opencv2/cudev/functional/functional.hpp>
#include <opencv2/cudev/util/vec_math.hpp>__global__
void apply_asin_kernel(const uchar* input, float* output, 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)return;int idx = y * width + x;uchar raw_value = input[idx];float normalized = raw_value / 255.0f;// 确保在定义域内if (normalized < -1.0f) normalized = -1.0f;if (normalized > 1.0f) normalized = 1.0f;output[idx] = asinf(normalized);
}int main() {// 创建测试图像(uchar类型,单通道)cv::Mat h_img = cv::Mat::zeros(480, 640, CV_8UC1);cv::randu(h_img, cv::Scalar::all(0), cv::Scalar::all(255));// 将输入上传到设备cv::cuda::GpuMat d_img;d_img.upload(h_img);// 创建输出设备内存(float1)cv::cuda::GpuMat d_out;d_out.create(d_img.size(), CV_32FC1);// 获取原始指针const uchar* d_input = d_img.ptr<uchar>();float* d_output = d_out.ptr<float>();// 设置 CUDA 线程块大小dim3 blockSize(16, 16);dim3 gridSize((d_img.cols + blockSize.x - 1) / blockSize.x,(d_img.rows + blockSize.y - 1) / blockSize.y);// 启动核函数apply_asin_kernel<<<gridSize, blockSize>>>(d_input, d_output, d_img.cols, d_img.rows);// 下载结果到主机cv::Mat h_out;d_out.download(h_out);// 显示部分结果std::cout << "First pixel (uchar): " << (int)h_img.at<uchar>(0, 0) << std::endl;std::cout << "After asin (float): " << h_out.at<float>(0, 0) << std::endl;return 0;
}

运行结果

First pixel (uchar): 91
After asin (float): 0.364907

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

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

相关文章

PixiJS 中 HTMLText 富文本渲染问题探究与优化思考​

起因 在使用 PixiJS 进行富文本渲染开发过程中&#xff0c;遭遇 HTMLText 组件处理中文字体加载时出现显著卡顿现象。针对此问题&#xff0c;在开源社区提交 issue 并附上相关技术细节与运行表现&#xff0c;期望获得解决方案。 提issues 从 issue 反馈内容来看&#xff0c;项目…

五、Redis的IO模型

简介 在谈及Redis为什么快的时候&#xff0c;很多人都只能回答redis是基于内存&#xff0c;所以快。但他们往往不知道&#xff0c;决定redis快的因素&#xff0c;还有它的IO模型-Reactor模型。谈及Redis的IO模型之前&#xff0c;先补充一下IO模型的基础知识。 IO模型演化 1.堵塞…

Cesium、ThreeWebGL详解(二)渲染引擎向GPU传数据、性能优化、引擎对比

下面从 API 定位、坐标体系、性能表现、面试常问点几个维度详细对比 Cesium、Three.js 与原生 WebGL 的绘制差异。 &#x1f9ed; 1. API 定位与典型应用 Cesium 聚焦全地球 GIS 场景&#xff0c;支持地形、影像、时空动态等地理信息功能&#xff0c;是专业级地图应用首选。 T…

单点登录(SSO)系统

设计一个 Java 单点登录&#xff08;SSO&#xff09;系统需要解决跨系统认证和会话共享问题。以下是核心设计和实现方案&#xff0c;包含关键组件和代码示例&#xff1a; 一、核心概念 认证中心 (Auth Center)&#xff1a;中央身份验证服务令牌 (Token)&#xff1a;用户身份凭…

《信息技术》科技核心期刊推荐

【科研必看】《信息技术》——科技核心期刊&#xff0c;助力你发表高影响力论文&#xff01; 如果你是一位科研工作者、学者或者在校学生&#xff0c;正在为发表论文而努力&#xff0c;那么《信息技术》期刊无疑是你不可错过的选择&#xff01;这本期刊以其卓越的学术影响力&am…

界面组件DevExpress WPF中文教程:Grid - 如何遍历节点?

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

2D写实交互数字人:让AI形象拥有“真人温度“的技术革命

在人工智能技术日新月异的今天&#xff0c;数字人已不再是科幻电影中的概念&#xff0c;而是逐步渗透到我们日常生活的各个领域。然而&#xff0c;市场上大多数数字人产品仍停留在"能说会动"的初级阶段&#xff0c;缺乏真正的情感交互能力&#xff0c;这种"机械…

2025 年拓客系统排行榜

在数字化营销时代&#xff0c;拓客系统成为企业获取客户资源、提升销售效率的关键工具。以下为您盘点 2025 年表现出色的中文名字拓客系统&#xff0c;其中 微拓客 凭借强大功能脱颖而出&#xff0c;成为众多从业者的首选。 一、微拓客&#xff1a;精准拓客的全能王者 微拓客堪…

TikTok 矩阵如何快速涨粉

在社交媒体的广袤天地里&#xff0c;TikTok 以其强大的影响力和庞大的用户基础&#xff0c;成为众多创作者和品牌竞相角逐的舞台。构建 TikTok 矩阵&#xff0c;是扩大影响力、实现快速涨粉的有效策略。那么&#xff0c;究竟如何让 TikTok 矩阵快速涨粉呢&#xff1f;下面将为您…

基于微信小程序和云开发的企业绿色融资平台的设计与实现

文章目录 摘要前言绪论1. 课题背景2. 国内外现状与趋势2.1 国内研究现状2.2 国外研究现状2.3 发展趋势3. 课题内容相关技术与方法介绍1. 微信小程序开发技术2. 腾讯云开发平台3. 绿色项目评估模型4. 智能匹配算法5. 碳核算方法系统分析1. 需求分析1.1 用户需求1.2 功能需求1.3 …

如何自建服务器并开启公网IP:本地内网网址让外网访问详细教学

本地内网环境自建服务器后&#xff0c;如何让外网访问&#xff0c;提供互联网连接服务呢&#xff1f;有不少方法都可以实现&#xff0c;常见的有如公网IP、DDNS动态域名、nat123内网穿透等&#xff0c;下面详细教学。 一、申请开公网IP-----------------公网IP篇-------------…

企业公用电脑登录安全管控的终极方案:ASP操作系统安全登录管控方案

一、引言&#xff1a;公用电脑——企业安全管理的“灰色地带” 在企业办公场景中&#xff0c;公用电脑&#xff08;如会议室电脑、生产线终端、客服工位&#xff09;因多用户共用、权限复杂&#xff0c;往往成为安全管理的薄弱环节。员工随意登录、弱密码泛滥、敏感数据泄露事…

HarmonyOS-ArkTS开发指南:从基础到实战

目录 一、基础语法 二、声明式 UI 开发 基本组件结构 三、状态管理 四、生命周期钩子 五、组件化开发 1. 创建自定义组件 2. 组件嵌套 六、事件处理 七、布局系统 八、样式设置 九、条件渲染与列表渲染 十、异步操作 十一、路由导航 开发建议 一、基础语法 ArkT…

算法-Day04

今天还是给大家分享几道题目&#xff0c;希望大家可以好好理解。 第一题 问题描述 小蓝有一天误入了一个混境之地。 好消息是&#xff1a;他误打误撞拿到了一张地图&#xff0c;并从中获取到以下信息&#xff1a; 混境之地是一个 n⋅m大小的矩阵&#xff0c;这个地图中一共…

Git版本控制详细资料

Git安装基本配置 下载安装(一路next) 打开bash终端&#xff08;git专用&#xff09; 命令: git -v(查看版本号) 配置: 用户名和邮箱,应用在每次提交代码版本时表明自己身份 命令: git config --global user.name "FT" git config --global user.email "F…

利用井云平台把Coze工作流接入小程序/网站封装变现 | 详细步骤→

今天来看看怎么把Coze工作流接入井云生成你的专属网站/小程序&#xff01; 当前已支持三大模块接入&#xff1a;✅ 工作流 ✅ 智能体 ✅ 外部网页 本文所用工具 1、扣子&#xff1a;www.coze.cn 2、井云智能体&#xff1a;jingyun.center 为什么选择井云平台&#xff1f; …

linux weston flutter remote desktop

参考:Outputs — weston 14.0.90 documentation Weston 14.0: DRM-backend, color management, and output mirroring Weston 14.0: DRM-backend, color management, and output mirroring 🖥️ 3. DRM 输出可镜像至远程输出(RDP、VNC、PipeWire) 这次更新还带来了一个…

GitHub Copilot 是什么,怎么使用

GitHub Copilot 是一个由 GitHub 和 OpenAI 联合开发的 AI 编程助手&#xff0c;它可以在你写代码的时候自动给出建议、补全代码&#xff0c;甚至生成整个函数或算法。它就像一个“聪明的副驾驶”&#xff0c;时刻在你旁边协助你写代码。 简单解释&#xff1a; GitHub Copilot …

Android系统及应用QUIC协议支持详解

QUIC协议在Android中的全面支持与实践指南 本文深入探讨QUIC协议在Android中的实现细节&#xff0c;涵盖基础原理、开发技巧、性能优化及前沿扩展&#xff0c;提供完整的Kotlin代码示例和工程实践指南。 1. QUIC协议核心优势 QUIC&#xff08;Quick UDP Internet Connections&…

.NET基于类名约定的自动依赖注入完整指南

&#x1f680; .NET基于类名约定的自动依赖注入完整指南 基于类名约定的自动依赖注入可大幅减少手动注册服务的工作量&#xff0c;本文将通过清晰的结构、美观的排版和丰富的示例&#xff0c;帮助你快速掌握这一实用技术。 &#x1f308; 核心特性概览 特性说明类名约定自动…