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

算法描述

OpenCV 的 CUDA 设备函数(device function),用于在 GPU 上计算一个 uchar4 类型向量的平方根,并返回一个 float4 类型的结果。
这个函数通常出现在 OpenCV 的 CUDA 加速图像处理代码中,例如:

  • 图像归一化(Normalization)
  • 色彩空间转换
  • 卷积、滤波等操作中涉及数值稳定性的平方根计算

它被设计为在 CUDA kernel 中高效使用,适用于需要对图像像素批量执行数学运算的高性能场景。

函数原型

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

参数

  • const uchar4 &a 输入参数是一个 uchar4 类型的常量引用(即 4 个无符号字符)

代码


#include <opencv2/opencv.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/cudev.hpp>
#include <iostream>__global__ void sqrtKernel(const uchar4* input, float4* output, int numPixels) {int idx = blockIdx.x * blockDim.x + threadIdx.x;if (idx < numPixels) {output[idx] = cv::cudev::sqrt(input[idx]);}
}int main() {// 读取图像(RGBA 格式)cv::Mat bgr = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/img0.jpg");if (bgr.empty()) {std::cerr << "Failed to load image!" << std::endl;return -1;}// 转换为 RGBAcv::Mat src;cv::cvtColor(bgr, src, cv::COLOR_BGR2BGRA);int width = src.cols;int height = src.rows;int numPixels = width * height;// 将输入图像上传到 GPUuchar4* d_input;cudaMalloc(&d_input, numPixels * sizeof(uchar4));cudaMemcpy(d_input, src.ptr<uchar4>(), numPixels * sizeof(uchar4), cudaMemcpyHostToDevice);// 分配输出内存float4* d_output;cudaMalloc(&d_output, numPixels * sizeof(float4));// 启动 kernelint blockSize = 256;int numBlocks = (numPixels + blockSize - 1) / blockSize;sqrtKernel<<<numBlocks, blockSize>>>(d_input, d_output, numPixels);// 下载结果回 CPUcv::Mat result(height, width, CV_32FC4);cudaMemcpy(result.ptr<float4>(), d_output, numPixels * sizeof(float4), cudaMemcpyDeviceToHost);// 显示或保存结果(例如将每个通道 clamp 到 [0,1] 并归一化显示)cv::Mat display;cv::normalize(result, display, 0, 1, cv::NORM_MINMAX, CV_32F);cv::imshow("Result", display);cv::waitKey(0);// 清理资源cudaFree(d_input);cudaFree(d_output);return 0;
}

运行结果

在这里插入图片描述

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

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

相关文章

鸿蒙应用开发:HTTP访问网络

一、HTTP概述 在许多场景下&#xff0c;我们的应用需要从服务端获取数据&#xff0c;例如&#xff0c;天气应用需要从天气服务器获取天气数据。新闻应用需要从新闻服务器获取最新的新闻咨询&#xff0c;通过HTTP数据请求&#xff0c;我们可以将互联网上的信息展示在应用中&…

【Elasticsearch】refresh与提交

在Elasticsearch中&#xff0c;Translog日志的提交确实涉及到与刷新&#xff08;Refresh&#xff09;时写入Lucene段的数据进行合并&#xff0c;并最终写入磁盘。以下是详细的步骤和解释&#xff1a; 一、Translog日志的提交过程 1. 刷新&#xff08;Refresh&#xff09;操作 …

服务器异常宕机或重启导致 RabbitMQ 启动失败问题分析与解决方案

服务器异常宕机或重启导致 RabbitMQ 启动失败问题分析与解决方案 一、深度故障诊断与解决方案1. 权限配置不当故障2. 端口占用故障3. 数据目录残留故障 二、故障类型对比与诊断矩阵三、完整恢复流程&#xff08;10步法&#xff09;四、风险规避与最佳实践&#x1f6e1;️ 数据保…

车载以太网都有什么协议?

目录 一、物理层协议(Physical Layer)二、数据链路层协议(Data Link Layer)三、网络层协议(Network Layer)四、传输层协议(Transport Layer)五、应用层协议(Application Layer)六、车载网络融合协议七、标准化组织八、协议分层总结表九、趋势与未来协议车载以太网涉及…

设计模式之外观模式:简化复杂系统的优雅之道

设计模式之外观模式&#xff1a;简化复杂系统的优雅之道 今天我们来深入探讨设计模式中的外观模式&#xff08;Facade Pattern&#xff09;。想象一下&#xff0c;你走进一家高档餐厅&#xff0c;只需要告诉服务员"我要一份A套餐"&#xff0c;而不需要关心厨房里厨师…

《Python 架构之美:三大设计模式实战指南》

《Python 架构之美:三大设计模式实战指南》 在软件世界中,设计模式是经验的结晶,它为开发者提供了解决重复问题的通用模板。尤其在 Python 这种灵活而强大的语言中,设计模式并非“死规矩”,而更像“编程哲学”,为我们解构复杂系统、提升代码可维护性提供了宝贵思路。 本…

力扣打卡第十八天 判定平衡二叉树

110. 平衡二叉树 给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,3,3,null,null,4,4] 输出&#xff1a;false示例 3&#xf…

Python 物联网(IoT)与边缘计算开发实战(1)

Python 物联网(IoT)与边缘计算开发实战 https://www.python.org/static/community_logos/python-logo-master-v3-TM.png 物联网基础与硬件交互 Raspberry Pi GPIO控制 python import RPi.GPIO as GPIO import time # 设置GPIO模式 GPIO.setmode(GPIO.BCM) GPIO.setwarnings(F…

高通SG882G平台(移远):1、编译脚本

文档提供的编译&#xff0c;有点问题。所以我重新整理了脚本。 build-lib.sh #!/bin/bashfunction prepare_build() {if [ ! -d download ]; thenmkdir downloadfilocal MODIFIED_DIRfile-replacelocal FILE_NAMEset_bb_env.shcp ${MODIFIED_DIR}/${FILE_NAME} \poky/qti-con…

Mac电脑 触摸板增强工具 BetterTouchTool

BetterTouchTool mac版&#xff0c;是一款触摸板增强工具&#xff0c;允许用户使用各种手势来控制其计算机。 Bettertouchtool mac是一个小而高效的macOS应用程序&#xff0c;旨在帮助您为手势定义快捷方式。 此外&#xff0c;Bettertouchtool可用于使用常规鼠标和键盘快捷键…

LSTM(Long Short-Term Memory)模型的深度解析

在6.28号我发了一个博客《RNN&#xff08;循环神经网络&#xff09;与LSTM&#xff08;长短期记忆网络&#xff09;输出的详细对比分析》&#xff0c;但是我并未详细讲解LSTM&#xff0c;LSTM是循环神经网络中的一个模型&#xff0c;然而通过这篇博客给大家深度解析一下LSTM&am…

WebRTC 安全性分析研究

一、概述 本文着重分析 WebRTC 的安全性&#xff0c;分析其安全性考虑及安全性实现&#xff0c;回答了以下问题: WebRTC 加密过程需要或依赖 CA (Certificate Authority)吗? 不需要 CA, 但可能依赖 CA.DTLS-SRTP 加密机制中, DTLS 与 SRTP 的关系是什么? DTLS 实现秘钥交换…

阿里云操作系统控制台如何解决三大OS运维难题?

背景 操作系统运维常常遇到以下问题&#xff1a; 1.问题定界浪费大量人力&#xff1a;当业务出现问题时&#xff0c;客户在不清楚是操作系统问题还是业务问题时&#xff0c;往往会拉上所有相关团队一起排查&#xff0c;浪费人力。 2.问题定位时间长&#xff1a;通过操作系统…

自由学习记录(65)

其他脚本语言也可以热更新&#xff0c;但 Lua 特别适合&#xff0c;游戏主程序通常是 C&#xff0c;Lua 只是逻辑脚本&#xff0c;改 Lua 不影响主程序运行 语言应用场景PythonWeb 后端 / 数据处理服务JavaScript浏览器端热重载 / React HMRC#Unity 的 ILRuntime / HybridCLR …

抗辐照芯片在核电厂火灾探测器中的应用优势与性能解析

一、引言 核电厂作为能源供应的关键设施&#xff0c;其安全性备受关注。火灾是威胁核电厂安全运行的重要风险因素之一。在核电厂的特殊环境下&#xff0c;火灾探测器肩负着及时发现火情、保障核电厂安全运行的重任。然而&#xff0c;核电厂存在高能辐射等复杂环境因素&#xf…

FastAPI+Sqlite+HTML的登录注册与文件上传系统:完整实现指南

作为一名开发者&#xff0c;你是否曾想过亲手搭建一个包含用户注册、登录认证和文件上传功能的完整 Web 系统&#xff1f;今天&#xff0c;我将带大家一步步拆解一个基于FastAPI&#xff08;后端&#xff09;和原生 JavaScript&#xff08;前端&#xff09;的前后端分离项目&am…

【动态规划】P11188 「KDOI-10」商店砍价|普及+

本文涉及知识点 C动态规划 P11188 「KDOI-10」商店砍价 题目背景 English Statement. You must submit your code at the Chinese version of the statement. 您可以点击 这里 下载本场比赛的选手文件。 You can click here to download all tasks and examples of the c…

国产LHR3040芯片是REF5040的代替品

LHR3040是一款噪声低、漂移低、精度高的电压基准产品系列。这些基准同时支持灌电流和拉电流&#xff0c;并且具有出色的线性和负载调节性能。采用专有的设计技术实现了出色的温漂(3ppm/℃)和高精度(0.05%)。这些特性与极低噪声相结合&#xff0c;使LHR30XX系列成为高精度数据采…

专题:2025AI营销市场发展研究报告|附400+份报告PDF汇总下载

原文链接&#xff1a;https://tecdat.cn/?p42800 在数字化浪潮席卷全球的当下&#xff0c;AI营销正成为驱动企业增长的核心动力。 从市场规模来看&#xff0c;AI营销正经历着爆发式增长&#xff0c;生成式AI的出现更是为其注入了强大活力。在应用层面&#xff0c;AI已渗透到营…