OpenCV CUDA模塊霍夫變換------在 GPU 上執行概率霍夫變換檢測圖像中的線段端點類cv::cuda::HoughSegmentDetector

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

算法描述

cv::cuda::HoughSegmentDetector 是 OpenCV 的 CUDA 模塊中一個非常重要的類,它用于在 GPU 上執行 概率霍夫變換(Probabilistic Hough Transform),能夠檢測圖像中的線段端點(即直線段),而不是標準霍夫變換中表示為 (rho, theta) 的無限長直線。

類定義

class cv::cuda::HoughSegmentDetector : public cv::cuda::Algorithm

繼承自 cv::cuda::Algorithm,提供了 GPU 加速的線段檢測功能。

主要功能

  • 在 GPU 上進行 概率霍夫變換
  • 輸出為一系列 線段端點,格式為 Vec4i(x1, y1, x2, y2)
  • 支持邊緣圖作為輸入(通常是 Canny 邊緣檢測后的圖像)

構造函數 & 創建方式

你可以通過以下方式創建該類的對象:

cv::Ptr<cv::cuda::HoughSegmentDetector> hough = cv::cuda::createHoughSegmentDetector(rho, theta, threshold, minLineLength, maxLineGap);

參數說明:

參數名類型含義
rhofloat距離分辨率(像素)
thetafloat角度分辨率(弧度)
thresholdint投票閾值,只有投票數大于等于此值的線段才被保留
minLineLengthint線段最小長度,小于該值的線段將被忽略
maxLineGapint同一線段上點之間的最大間隙

方法列表(常用方法)

方法名功能
detect(InputArray src, OutputArray lines, Stream& stream = Stream::Null())執行霍夫變換檢測線段
setRho(float rho) / getRho()設置/獲取距離分辨率
setTheta(float theta) / getTheta()設置/獲取角度分辨率
setThreshold(int threshold) / getThreshold()設置/獲取投票閾值
setMinLineLength(int minLineLength) / getMinLineLength()設置/獲取線段最小長度
setMaxLineGap(int maxLineGap) / getMaxLineGap()設置/獲取線段最大間隙

代碼示例

#include <opencv2/opencv.hpp>
#include <opencv2/cudaimgproc.hpp>int main()
{// Step 1: 加載圖像并轉為灰度圖cv::Mat h_src = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/lines.png", cv::IMREAD_GRAYSCALE);if (h_src.empty()) {std::cerr << "無法加載圖像!" << std::endl;return -1;}// Step 1.1: 圖像預處理(高斯模糊降噪)cv::Mat h_blur;cv::GaussianBlur(h_src, h_blur, cv::Size(5, 5), 0);// Step 2: 上傳到 GPU 并執行 Canny 邊緣檢測cv::cuda::GpuMat d_src, d_edges;d_src.upload(h_blur);cv::Ptr<cv::cuda::CannyEdgeDetector> canny = cv::cuda::createCannyEdgeDetector(100, 200);canny->detect(d_src, d_edges);// Step 3: 創建概率霍夫變換檢測器float rho         = 1.0f;            // 距離分辨率float theta       = CV_PI / 180.0f;  // 角度分辨率(1 度)int threshold     = 30;              // 投票閾值(更敏感)int minLineLength = 50;              // 最小線段長度(更短也保留)int maxLineGap    = 20;              // 線段之間最大間隙(容許更大間隙)cv::Ptr<cv::cuda::HoughSegmentDetector> hough =cv::cuda::createHoughSegmentDetector(rho, theta, threshold, minLineLength, maxLineGap);// Step 4: 執行線段檢測cv::cuda::GpuMat d_lines;hough->detect(d_edges, d_lines);// Step 5: 下載結果std::vector<cv::Vec4i> h_lines;d_lines.download(h_lines);// Step 6: 繪制檢測到的線段cv::Mat display;cv::cvtColor(h_src, display, cv::COLOR_GRAY2BGR);for (const auto& line : h_lines){cv::Point pt1(line[0], line[1]);cv::Point pt2(line[2], line[3]);cv::line(display, pt1, pt2, cv::Scalar(0, 255, 0), 2);}// Step 7: 顯示結果cv::imshow("Detected Line Segments", display);cv::waitKey();return 0;
}

運行結果

在這里插入圖片描述

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

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

相關文章

李飛飛World Labs開源革命性Web端3D渲染器Forge!3D高斯濺射技術首次實現全平臺流暢運行

在AI與3D技術深度融合的今天&#xff0c;李飛飛領銜的World Labs團隊再次成為行業焦點。今日&#xff0c;他們正式開源了Forge——一款專為Web端設計的3D高斯濺射&#xff08;3D Gaussian Splatting&#xff09;渲染器&#xff0c;不僅支持THREE.js生態&#xff0c;更能在手機、…

Java 中 ArrayList、Vector、LinkedList 的核心區別與應用場景

Java 中 ArrayList、Vector、LinkedList 的核心區別與應用場景 引言 在 Java 集合框架體系中&#xff0c;ArrayList、Vector和LinkedList作為List接口的三大經典實現類&#xff0c;共同承載著列表數據的存儲與操作功能。然而&#xff0c;由于底層數據結構設計、線程安全機制以…

Paraformer分角色語音識別-中文-通用 FunASR

https://github.com/modelscope/FunASR/blob/main/README_zh.md https://github.com/modelscope/FunASR/blob/main/model_zoo/readme_zh.md PyTorch / 2.3.0 / 3.12(ubuntu22.04) / 12.1 1 Paraformer分角色語音識別-中文-通用 https://www.modelscope.cn/models/iic/speech…

k8s熱更新-subPath 不支持熱更新

文章目錄 k8s熱更新-subPath 不支持熱更新背景subPath 不支持熱更新1. 為什么 subPath 不支持熱更新&#xff1f;2. 掛載整個目錄為何支持熱更新&#xff1f;使用demo舉例&#xff1a;掛載整個目錄&#xff08;不使用 subPath&#xff09; k8s熱更新-subPath 不支持熱更新 背景…

分班 - 華為OD統一考試(JavaScript 題解)

華為OD機試題庫《C》限時優惠 9.9 華為OD機試題庫《Python》限時優惠 9.9 華為OD機試題庫《JavaScript》限時優惠 9.9 針對刷題難&#xff0c;效率慢&#xff0c;我們提供一對一算法輔導&#xff0c; 針對個人情況定制化的提高計劃&#xff08;全稱1V1效率更高&#xff09;。 看…

【TCP/IP和OSI模型以及區別——理論匯總】

參考小林code和卡爾哥&#xff0c;感恩&#xff01; 網絡基礎篇 面試官您好&#xff01;OSI和TCP/IP是網絡通信中兩個關鍵模型&#xff0c;本質都是分層處理數據傳輸&#xff0c;但設計理念和應用場景差異很大。 OSI模型是理論上的七層架構&#xff0c;從下到上依次是物理層…

極客大挑戰 2019 EasySQL 1(萬能賬號密碼,SQL注入,HackBar)

題目 做法 啟動靶機&#xff0c;打開給出的網址 隨便輸點東西進去&#xff0c;測試一下 輸入1、1’、1"判斷SQL語句閉合方式 輸入以上兩個都是以下結果 但是&#xff0c;輸入1’時&#xff0c;出現的是另外結果 輸入1&#xff0c;1"時&#xff0c;SQL語句沒有…

Tauri(2.5.1)+Leptos(0.7.8)開發桌面應用--簡單的工作進度管理

在前期工作&#xff08;Tauri(2.5.1)Leptos(0.7.8)開發桌面應用--程序啟動界面_tauri 程序啟動畫面-CSDN博客&#xff09;的基礎上繼續進行自用桌面小程序的開發。為了方便管理工作進度&#xff0c;決定自己造輪子。效果如下&#xff1a; 工作進度管理系統 在編寫程序過程中&am…

java面試 網絡編程與 Java I/O:技術要點解析

java面試 網絡編程與 Java I/O&#xff1a;技術要點解析 網絡編程與 Java I/O&#xff1a;技術要點解析一、TCP 和 UDP 的區別TCP&#xff08;Transfer Control Protocol&#xff09;UDP&#xff08;User Datagram Protocol&#xff09;TCP 的三次握手與四次揮手 二、Java 的幾…

PhpStorm設置中文

環境信息 系統版本&#xff1a;Windows11 22H2 PhpStorm版本&#xff1a;2025.1.1【Build #PS-251.25410.148】 設置中文 PhpStorm并不需要安裝插件或下載相應的漢化包進行漢化 依次點擊點擊&#xff1a; file或右上角設置按鈕→ 進入Settings→ 找到Appearance & Behav…

【監控】Spring Boot 應用監控

這段配置是 Spring Boot 應用中對 Actuator 和 Micrometer 監控系統的配置&#xff0c;用于將應用的指標暴露給 Prometheus 進行收集。下面我將詳細介紹這種配置方式及其提供的指標。 配置說明 這個配置主要涉及 Spring Boot Actuator 和 Micrometer 兩個核心組件&#xff1a…

學習筆記(23): 機器學習之數據預處理Pandas和轉換成張量格式[1]

學習筆記(23): 機器學習之數據預處理Pandas和轉換成張量格式[1] 學習機器學習&#xff0c;需要學習如何預處理原始數據&#xff0c;這里用到pandas&#xff0c;將原始數據轉換為張量格式的數據。 1、安裝pandas pip install pandas 2、寫入和讀取數據 >>創建一個人工…

一臺電腦聯網如何共享另一臺電腦?網線方式

前言 公司內網一個人只能申請一個賬號和一個主機設備&#xff1b;會檢測MAC地址&#xff1b;如果有兩臺設備&#xff0c;另一臺就沒有網&#xff1b;因為是聯想老電腦&#xff0c;共享熱點用不了&#xff0c;但是有一根網線&#xff0c;現在解決網線方式共享網絡&#xff1b; …

Spring Boot 基礎知識全面解析:快速構建企業級應用的核心指南

一、Spring Boot 概述&#xff1a;重新定義 Java 開發 1.1 什么是 Spring Boot&#xff1f; Spring Boot 是基于 Spring 框架的快速開發框架&#xff0c;旨在簡化 Spring 應用的初始搭建及開發過程。它通過 「約定優于配置」&#xff08;Convention Over Configuration&#…

CentOS-stream-9 Zabbix的安裝與配置

一、Web環境搭建部署Zabbix時&#xff0c;選擇合適的MariaDB、PHP和Nginx版本非常重要&#xff0c;以確保兼容性和最佳性能。以下是建議版本&#xff1a;Zabbix 6.4 MariaDB&#xff1a;官方文檔推薦使用MariaDB 10.3或更高版本。對于CentOS Stream 9&#xff0c;建議使用Maria…

CppCon 2014 學習:Adventures in Updating a Legacy Vintage Codebase

“VINTAGE” 部分是對現實中飛行模擬系統中遺留系統復雜性的描述。以下是對關鍵點的理解與拆解&#xff1a; 飛行模擬系統的背景 多環境、多語言、多硬件&#xff1a; 編程語言&#xff1a; 混用的“遺留語言”&#xff1a;Ada, C, C, Fortran, Jovial, PL/M, Pascal不同語言…

【計算機】計算機存儲器的分類與特性

文章目錄 一、按作用層次分類1. 主存儲器&#xff08;內存&#xff09;2. 輔助存儲器&#xff08;外存&#xff09;3. 高速緩沖存儲器&#xff08;Cache&#xff09; 二、按存儲介質分類1. 半導體存儲器2. 磁存儲技術3. 光存儲發展 三、按存取方式分類1. 隨機存儲器技術細節2. …

Redisson - 實現延遲隊列

Redisson 延遲隊列 Redisson 是基于 Redis 的一款功能強大的 Java 客戶端。它提供了諸如分布式鎖、限流器、阻塞隊列、延遲隊列等高可用、高并發組件。 其中&#xff0c;RDelayedQueue 是對 Redis 數據結構的高階封裝&#xff0c;能讓你將消息延遲一定時間后再進入消費隊列。…

上門服務小程序訂單系統框架設計

一、邏輯分析 上門服務小程序訂單系統主要涉及服務展示、用戶下單、訂單處理、服務人員接單與服務完成反饋等核心流程。 服務展示&#xff1a;不同類型的上門服務&#xff08;如家政、維修等&#xff09;需要在小程序中展示詳細信息&#xff0c;包括服務名稱、價格、服務內容介…

Android apk裝機編譯類型: verify、speed-profile, speed與啟動耗時

Android apk裝機編譯類型: verify、speed-profile, speed與啟動耗時 Dex2oat (dalvik excutable file to optimized art file) &#xff0c;對 dex 文件進行編譯優化&#xff0c;Android 虛擬機可識別的是dex文件&#xff0c;應用運行過程如果每次都將dex文件加載內存&#xff…