OpenCV CUDA模块设备层-----欧几里得距离函数hypot()

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

算法描述

该函数用于计算两个无符号字符向量(uchar1)的欧几里得距离(即直角三角形的斜边长度),公式为 d = a 2 + b 2 d = \sqrt{a^2 + b^2} % d=a2+b2

​,结果以单精度浮点向量(float1)返回。
主要应用于图像处理中的像素距离计算、特征匹配等场景,通过GPU并行加速提升性能.

函数原型‌

__device__ __forceinline__ float1 cv::cudev::hypot 	( 	const uchar1 &  	a,const uchar1 &  	b ) 	

参数

参数类型描述
aconst uchar1&输入的无符号字符向量(单通道,值域0-255)。
bconst uchar1&输入的无符号字符向量(单通道,值域0-255)。

‌注意‌:输入值超出0-255范围可能导致浮点溢出。

返回值‌

  • ‌类型‌:float1
  • 返回单精度浮点向量,值为 a 2 + b 2 \sqrt{a^2 + b^2} a2+b2 ​ 的计算结果。

代码示例

#include <opencv2/opencv.hpp>
#include <opencv2/cudev/common.hpp>
#include <opencv2/cudev/util/vec_math.hpp>__global__ void kernel_hypot(const cv::cudev::PtrStepSz<uchar1> src1, const cv::cudev::PtrStepSz<uchar1> src2,cv::cudev::PtrStepSz<float1> dst) {int x = blockIdx.x * blockDim.x + threadIdx.x;int y = blockIdx.y * blockDim.y + threadIdx.y;if (x < src1.cols && y < src1.rows) {dst(y, x) = cv::cudev::hypot(src1(y, x), src2(y, x));}
}int main() {// 1. 准备测试数据cv::Mat h_src1(512, 512, CV_8UC1);cv::Mat h_src2(512, 512, CV_8UC1);cv::randu(h_src1, 0, 255);cv::randu(h_src2, 0, 255);// 2. 上传数据到GPUcv::cuda::GpuMat d_src1, d_src2, d_dst;d_src1.upload(h_src1);d_src2.upload(h_src2);d_dst.create(h_src1.size(), CV_32FC1);// 3. 调用核函数dim3 block(16, 16);dim3 grid((h_src1.cols + block.x - 1) / block.x, (h_src1.rows + block.y - 1) / block.y);kernel_hypot<<<grid, block>>>(cv::cudev::PtrStepSz<uchar1>(d_src1),cv::cudev::PtrStepSz<uchar1>(d_src2),cv::cudev::PtrStepSz<float1>(d_dst));// 4. 验证结果cv::Mat h_dst;d_dst.download(h_dst);std::cout << "Sample result: " << h_dst.at<float>(0,0) << std::endl;return 0;
}

运行结果

Sample result: 199.023

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

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

相关文章

惠普HP LaserJet Pro P1106 打印机信息

基本信息 产品类型&#xff1a;黑白激光打印机。上市时间&#xff1a;2011 年。最大打印幅面&#xff1a;A4。网络打印&#xff1a;不支持网络打印。双面打印&#xff1a;手动双面打印。 性能参数 打印速度&#xff1a;黑白打印速度&#xff08;ISO&#xff0c;A4&#xff09;正…

通义灵码智能体模式在企业级开发中的应用:以云效DevOps自动化流程为例

一、智能体模式的核心能力 通义灵码的智能体模式区别于传统代码补全工具&#xff0c;具备&#xff1a; 语义级理解&#xff1a;解析业务需求、代码上下文及错误日志。自主任务闭环&#xff1a;从问题诊断→ 代码生成→ 测试覆盖→ 文档生成全流程自动化。环境感知&#xff1a…

SQL学习笔记2

DDL、DML、DQL、DCL基础语法 1、DDL 查询 查询所有数据库&#xff1a;show databases; show databases; 查询当前数据库&#xff1a;select database(); select database(); 数据库创建 创建数据库:create database [if not exist(若存在重名数据库&#xff0c;则不创建…

VScode常用快捷键【个人总结】

注&#xff1a;快捷键以 Windows/Linux 为主&#xff0c;Mac 用户将 Ctrl 替换为 Cmd&#xff0c;Alt 替换为 Option。 1. 编辑相关 快速复制与剪切 Alt Shift ↓&#xff1a;复制当前行到下方Alt Shift ↑&#xff1a;复制当前行到上方Ctrl X&#xff1a;剪切整行&…

数据结构与算法:线性表-顺序表(顺序存储)

一、线性表的定义&#xff08;逻辑结构&#xff09; 线性表是由 n (n > 0) 个相同数据类型的数据元素组成的有限序列&#xff0c;其中 n 为线性表的表长&#xff0c;当 n 0 时&#xff0c;线性表为空表。如果用 L 命名线性表&#xff0c;那么一般表示为&#xff1a;L (a1…

从源码到实践:Java集合框架面试核心知识点全解析

在Java开发中&#xff0c;集合框架&#xff08;Java Collections Framework&#xff09;是最基础也最常用的工具集。无论是处理业务逻辑时的数据暂存&#xff0c;还是高性能场景下的算法优化&#xff0c;集合的使用都贯穿始终。因此&#xff0c;Java集合相关的面试题几乎是所有…

【深度学习新浪潮】空间计算的医疗应用技术分析(简要版)

空间计算是一种通过融合计算机视觉、传感器技术与三维渲染,将虚拟内容精准锚定到物理空间,实现数字世界与现实世界无缝交互的技术体系。其核心在于让计算机理解真实环境的结构、位置和动态,从而支持自然交互(如手势、语音、眼动)和沉浸式体验。例如,苹果Vision Pro通过实…

win电脑没有xcode怎么上传ipa

在上架IOS项目的时候&#xff0c;遇到一个问题&#xff0c;如下图&#xff0c;在app store connect上架的时候&#xff0c;需要选择一个构建版本&#xff0c;然后它在下方提示&#xff0c;点击查看上传工具后&#xff0c;会发现需要下载xcode或mac命令行等工具来上传编译后的文…

相机标定与3D重建技术通俗讲解

一、什么是相机标定&#xff1f;能解决什么问题&#xff1f; 相机标定是计算机视觉中的基础技术&#xff0c;简单来说&#xff0c;就是确定相机从3D世界拍摄到2D图像时的"转换规则"。具体解决两个核心问题&#xff1a; 相机内部属性&#xff1a;如焦距&#xff08;…

DeepSeek-Reasoner推理模型示例

《DEEPSEEK原生应用与智能体开发实践 王晓华 书籍 图书》【摘要 书评 试读】- 京东图书 在之前讲解的示例中&#xff08;指这个示例&#xff1a;通过Prompt提示构建思维链-CSDN博客&#xff09;&#xff0c;无论是进行日常对话还是调用特定工具&#xff0c;我们所依赖的底层技…

常说的电源芯片到底指什么?

电源芯片是电子系统中用于管理、转换和分配电能的集成电路&#xff0c;根据功能和应用场景的不同&#xff0c;主要分为以下几类&#xff1a; 一、线性稳压器&#xff08;LDO, Low Dropout Regulator&#xff09; LDO内部的基本电路情况如下&#xff1a; LDO内部主要分为四大部…

【大模型学习】项目练习:套壳DeepSeek

这里是阿川的博客&#xff0c;祝您变得更强 ✨ 个人主页&#xff1a;在线OJ的阿川 &#x1f496;文章专栏&#xff1a;AI入门到进阶 &#x1f30f;代码仓库&#xff1a; 写在开头 现在您看到的是我的结论或想法&#xff0c;但在这背后凝结了大量的思考、经验和讨论 &#x1f4…

笔记03:布线-过孔的调用与添加

布线-过孔的调用与添加 &#xff08;1&#xff09;在进行PCB设计时&#xff0c;都必须使用到过孔&#xff0c;对走线进行换层处理。在走线进行打过孔之前&#xff0c;必须先要添加过孔&#xff0c;这样在PCB布线时才可以使用过孔。 &#xff08;2&#xff09;需要使用pad des…

在vscode中,Python程序的内置对象、关键字、自定义函数名/类名、字符串进行着色,说明分别是什么颜色?

在 VS Code 中&#xff0c;Python 代码的着色完全取决于你当前使用的主题。不同主题&#xff08;如 Dark, Monokai, Solarized Dark, Light, Quiet Light 等&#xff09;对不同类型的代码元素会使用不同的颜色。 一、Default Dark&#xff08;默认的深色主题&#xff09; impo…

Visual Studio 中使用 AddressSanitizer 指南

Visual Studio 中使用 AddressSanitizer 指南 基于 Microsoft Visual Studio 2022&#xff0c;支持 MSVC 和 Clang 编译器链&#xff0c;本文详细说明如何在 VS 中配置和使用 AddressSanitizer&#xff0c;用于检测内存误用&#xff0c;如消息释放后访问、超界读写等类型错误。…

Flink Sink函数深度解析:从原理到实践的全流程探索

在Flink的数据流处理体系中&#xff0c;Sink函数作为数据处理的最终出口&#xff0c;肩负着将处理后的数据写入外部存储引擎的关键使命。它如同数据旅程的终点站&#xff0c;决定着数据的最终归宿与应用价值。深入理解Sink函数的工作原理、核心概念及实现方式&#xff0c;对构建…

Codex+ 自建中转 API 部署教程(Windows 版)

&#x1f4cc; 一、前置环境准备 安装 Node.js 和 Codex CLI&#xff1a; npm install -g openai/codex准备 OpenAI API Key 确保你已有的中转接口兼容 OpenAI 格式&#xff0c; &#x1f4cc; 二、设置 PowerShell 环境变量 # 设置你的 API Key&#xff08;使用哪家的看你的…

Centos 7离线部署Nginx 高效省时

给脚本执行权限&#xff1a;chmod x install_nginx.sh以root用户运行&#xff1a;sudo ./install_nginx.sh 脚本如下&#xff1a; #!/bin/bash # Nginx一键化部署脚本&#xff08;修复版本开机自启&#xff09; # 需要以root权限运行set -e # 任何命令失败时立即退出脚本# 定…

P7915 [CSP-S 2021] 回文

题目描述 给定正整数 n n n 和整数序列 a 1 , a 2 , … , a 2 n a_1, a_2, \ldots, a_{2 n} a1​,a2​,…,a2n​&#xff0c;在这 2 n 2 n 2n 个数中&#xff0c; 1 , 2 , … , n 1, 2, \ldots, n 1,2,…,n 分别各出现恰好 2 2 2 次。现在进行 2 n 2 n 2n 次操作&#xf…

小智AI -- ESP32-S3 DIY面包板WIFI-LCD彩屏

DIY 所需硬件 开发板&#xff1a;ESP32-S3-DevKitC-1&#xff08;选择 WROOM N16R8 模组&#xff09; Goouuu ESP32-S3-N16R8开发板数字麦克风&#xff1a;INMP441 INMP441全向麦克风模块功放&#xff1a;MAX98357A MAX98357 I2S 音频放大器模块腔体喇叭&#xff1a;8Ω 2~3W 或…