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
英文地址,請注明出處:http://en.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 或…