OpenCV CUDA模塊圖像過濾------創建一個 Sobel 濾波器函數createSobelFilter()

  • 操作系統:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 編程語言:C++11

算法描述

該函數用于創建一個 Sobel 濾波器,用于在 GPU 上進行邊緣檢測。它基于圖像的梯度計算:

  • dx 表示對 x 方向求導的階數(0 或 1)
  • dy 表示對 y 方向求導的階數(0 或 1)
  • 支持核大小為 1、3、5、7 等奇數尺寸(默認為 3)

由于是 CUDA 實現,適合大規模圖像的高性能處理。

參數

參數名類型描述
srcTypeint輸入圖像的數據類型。例如:CV_8UC1, CV_32FC4 等。
dstTypeint輸出圖像的數據類型。通常與輸入相同或轉換為更高精度(如 CV_32F)。
dxintx 方向導數的階數。取值為 0 或 1,表示是否對 x 方向求導。
dyinty 方向導數的階數。取值為 0 或 1,表示是否對 y 方向求導。
ksizeintSobel 核大小,必須是正奇數,默認為 3。支持 1、3、5、7。
scaledouble可選比例因子,默認為 1。可用于對結果進行縮放(如歸一化)。
rowBorderModeint垂直方向(行)的邊界填充方式。常用值有 BORDER_DEFAULT, BORDER_REPLICATE 等。
columnBorderModeint水平方向(列)的邊界填充方式,默認為 -1,表示與 rowBorderMode 相同。

返回值

返回一個指向 cv::cuda::Filter 的智能指針 (Ptr),可以調用 .apply() 方法在 GPU 上執行 Sobel 邊緣檢測操作。

代碼示例

以下是一個完整的使用 createSobelFilter 提取圖像 x 和 y 方向梯度的示例代碼:

#include <opencv2/opencv.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/cudafilters.hpp>int main() {// 讀取圖像并上傳到 GPUcv::Mat h_input = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_GRAYSCALE);if (h_input.empty()) {std::cerr << "無法加載圖像!" << std::endl;return -1;}cv::cuda::GpuMat d_input, d_output_x, d_output_y;d_input.upload(h_input);// 創建 Sobel 濾波器(x方向)cv::Ptr<cv::cuda::Filter> sobelX = cv::cuda::createSobelFilter(d_input.type(),       // 輸入類型CV_32F,               // 輸出設為浮點型1,                    // x方向導數0,                    // y方向不導數3                     // 核大小);// 創建 Sobel 濾波器(y方向)cv::Ptr<cv::cuda::Filter> sobelY = cv::cuda::createSobelFilter(d_input.type(),CV_32F,0,1,3);// 應用濾波器sobelX->apply(d_input, d_output_x);sobelY->apply(d_input, d_output_y);// 下載結果并歸一化顯示cv::Mat h_output_x, h_output_y;d_output_x.download(h_output_x);d_output_y.download(h_output_y);cv::Mat out_x_u8, out_y_u8;cv::normalize(h_output_x, out_x_u8, 0, 255, cv::NORM_MINMAX, CV_8U);cv::normalize(h_output_y, out_y_u8, 0, 255, cv::NORM_MINMAX, CV_8U);cv::imshow("Sobel X", out_x_u8);cv::imshow("Sobel Y", out_y_u8);cv::waitKey(0);return 0;
}

運行結果

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82564.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82564.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82564.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【JavaSE】枚舉和注解學習筆記

枚舉和注解 -枚舉 規定多選一數據類型的解決方案-枚舉 枚舉對應英文(enumeration,簡寫 enum) 2)枚舉是一組常量的集合。 3)可以這里理解:枚舉屬于一種特殊的類&#xff0c;里面只包含一組有限的特定的對象。 枚舉的兩種實現方式 自定義實現枚舉 使用enum關鍵字實現枚舉 自…

Spark SQL進階:解鎖大數據處理的新姿勢

目錄 一、Spark SQL&#xff0c;為何進階&#xff1f; 二、進階特性深剖析 2.1 窗口函數&#xff1a;數據洞察的新視角 2.2 高級聚合&#xff1a;挖掘數據深度價值 2.3 自定義函數&#xff08;UDF 和 UDTF&#xff09;&#xff1a;拓展功能邊界 三、性能優化實戰 3.1 數…

如何利用 Conda 安裝 Pytorch 教程 ?

如何利用 Conda 安裝 Pytorch 教程 &#xff1f; 總共分為六步走&#xff1a; &#xff08;1&#xff09;第一步&#xff1a;驗證conda 環境是否安裝好&#xff1f; 1) conda -V2) conda --version&#xff08;2&#xff09;第二步&#xff1a;查看現有環境 conda env list…

什么是HTTP

HTTP&#xff08;HyperText Transfer Protocol&#xff09;是萬維網數據通信的基礎協議&#xff0c;作為應用層協議具有以下關鍵特性&#xff1a; 客戶端-服務器模型&#xff1a;基于請求/響應模式 無狀態協議&#xff1a;默認不保留通信狀態 可擴展性&#xff1a;通過首部字…

2025-05-27 學習記錄--Python-模塊

合抱之木&#xff0c;生于毫末&#xff1b;九層之臺&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、模塊 ?? &#xff08;一&#xff09;模塊的導入與使用 &#x1f36d; 模塊的導入&#xff1a;&#x1f41d; 模塊 就好比…

leetcode 131. Palindrome Partitioning

目錄 一、題目描述 二、方法1、回溯法每次暴力判斷回文子串 三、方法2、動態規劃回溯法 一、題目描述 分割回文子串 131. Palindrome Partitioning 二、方法1、回溯法每次暴力判斷回文子串 class Solution {vector<vector<string>> res;vector<string>…

重構開發范式!飛算JavaAI革新Spring Cloud分布式系統開發

分布式系統憑借高可用性、可擴展性等核心優勢&#xff0c;成為大型軟件項目的標配架構。Spring Cloud作為Java生態最主流的分布式開發框架&#xff0c;雖被廣泛應用于微服務架構搭建&#xff0c;但其傳統開發模式卻面臨效率瓶頸——從服務注冊中心配置到網關路由規則編寫&#…

python 生成復雜表格,自動分頁等功能

py&#xff54;&#xff48;&#xff4f;&#xff4e; 生成復雜表格&#xff0c;自動分頁等功能 解決將Python中的樹形目錄數據轉換為Word表格&#xff0c;并生成帶有合并單元格的檢測報告的問題。首先&#xff0c;要解決“tree目錄數據”和“Word表格互換”&#xff0c;指將樹…

根據Cortex-M3(包括STM32F1)權威指南講解MCU內存架構與如何查看編譯器生成的地址具體位置

首先我們先查看官方對于Cortex-M3預定義的存儲器映射 1.存儲器映射 1.1 Cortex-M3架構的存儲器結構 內部私有外設總線&#xff1a;即AHB總線&#xff0c;包括NVIC中斷&#xff0c;ITM硬件調試&#xff0c;FPB, DWT。 外部私有外設總線&#xff1a;即APB總線&#xff0c;用于…

Linux中硬件信息查詢利器——lshw命令詳解!

lshw&#xff08;List Hardware&#xff09;是 Linux 系統下的一款命令行工具&#xff0c;用于全面檢測并顯示詳細的硬件信息。它能夠報告 CPU、內存、主板、存儲設備、顯卡、網絡設備等幾乎所有硬件組件的詳細信息&#xff0c;適用于系統管理、故障排查和硬件兼容性檢查等場景…

用llama3微調了一個WiFiGPT 用于室內定位

一段話總結 本文提出WiFiGPT,一種基于Decoder-Only Transformer(如LLaMA 3)的室內定位系統,通過將WiFi遙測數據(如CSI、FTM、RSSI)轉換為文本序列進行端到端訓練,無需手工特征工程即可實現高精度定位。實驗表明,WiFiGPT在LOS環境中實現亞米級精度(MAE低至0.90米),在…

大模型系列22-MCP

大模型系列22-MCP 玩轉 MCP 協議&#xff1a;用 Cline DeepSeek 接入天氣服務什么是 MCP&#xff1f;環境準備&#xff1a;VScode Cline DeepSeek**配置 DeepSeek 模型&#xff1a;****配置 MCP 工具****uvx是什么&#xff1f;****安裝 uv&#xff08;會自動有 uvx 命令&…

Go語言Map的底層原理

概念 map 又稱字典&#xff0c;是一種常用的數據結構&#xff0c;核心特征包含下述三點&#xff1a; &#xff08;1&#xff09;存儲基于 key-value 對映射的模式&#xff1b; &#xff08;2&#xff09;基于 key 維度實現存儲數據的去重&#xff1b; &#xff08;3&#x…

循環神經網絡(RNN):原理、架構與實戰

循環神經網絡&#xff08;Recurrent Neural Network, RNN&#xff09;是一類專門處理序列數據的神經網絡&#xff0c;如時間序列、自然語言、音頻等。與前饋神經網絡不同&#xff0c;RNN 引入了循環結構&#xff0c;能夠捕捉序列中的時序信息&#xff0c;使模型在不同時間步之間…

java 項目登錄請求業務解耦模塊全面

登錄是統一的閘機&#xff1b; 密碼存在數據庫中&#xff0c;用的是密文&#xff0c;后端加密&#xff0c;和數據庫中做對比 1、UserController public class UserController{Autowiredprivate IuserService userservicepublic JsonResult login(Validated RequestBody UserLo…

【手寫數據庫核心揭秘系列】第9節 可重入的SQL解析器,不斷解析Structure Query Language,語言翻譯好幫手

可重入的SQL解析器 文章目錄 可重入的SQL解析器一、概述 二、可重入解析器 2.1 可重入設置 2.2 記錄狀態的數據結構 2.3 節點數據類型定義 2.4 頭文件引用 三、調整后的程序結構 四、總結 一、概述 現在就來修改之前sqlscanner.l和sqlgram.y程序,可以不斷輸入SQL語句,循環執…

微軟開源bitnet b1.58大模型,應用效果測評(問答、知識、數學、邏輯、分析)

微軟開源bitnet b1.58大模型,應用效果測評(問答、知識、數學、邏輯、分析) 目 錄 1. 前言... 2 2. 應用部署... 2 3. 應用效果... 3 1.1 問答方面... 3 1.2 知識方面... 4 1.3 數字運算... 6 1.4 邏輯方面... …

用HTML5+JavaScript實現漢字轉拼音工具

用HTML5JavaScript實現漢字轉拼音工具 前一篇博文&#xff08;https://blog.csdn.net/cnds123/article/details/148067680&#xff09;提到&#xff0c;當需要將拼音添加到漢字上面時&#xff0c;用python實現比HTML5JavaScript實現繁瑣。在這篇博文中用HTML5JavaScript實現漢…

鴻蒙OSUniApp 開發的動態背景動畫組件#三方框架 #Uniapp

使用 UniApp 開發的動態背景動畫組件 前言 在移動應用開發中&#xff0c;動態背景動畫不僅能提升界面美感&#xff0c;還能增強用戶的沉浸感和品牌辨識度。無論是登錄頁、首頁還是活動頁&#xff0c;恰到好處的動態背景都能讓產品脫穎而出。隨著鴻蒙&#xff08;HarmonyOS&am…

云原生技術架構技術探索

文章目錄 前言一、什么是云原生技術架構二、云原生技術架構的優勢三、云原生技術架構的應用場景結語 前言 在當今的技術領域&#xff0c;云原生技術架構正以一種勢不可擋的姿態席卷而來&#xff0c;成為了眾多開發者、企業和技術愛好者關注的焦點。那么&#xff0c;究竟什么是…