OpenCV CUDA模塊圖像處理-----對圖像執行 均值漂移過程(Mean Shift Procedure)函數meanShiftProc()

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

算法描述

執行一個均值漂移過程(mean-shift procedure),并將處理后的點的信息(它們的顏色和位置)存儲在兩幅圖像中。

該函數將源圖像中的每個像素映射到一個新的顏色和位置,從而實現:

  • 顏色空間的聚類;
  • 空間位置的平滑;
  • 圖像分割或風格化的預處理;

與 cv::cuda::meanShiftFiltering 不同的是,這個函數會輸出兩個結果:

  • 顏色空間的結果(dstr)
  • 空間位置的結果(dstsp)

函數原型

void cv::cuda::meanShiftProc 	
(InputArray  	src,OutputArray  	dstr,OutputArray  	dstsp,int  	sp,int  	sr,TermCriteria  	criteria = TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 5, 1),Stream &  	stream = Stream::Null() 
) 		

參數

  • src 源圖像。目前僅支持 CV_8UC4 類型的圖像(即:8位無符號整型、4通道圖像)。
  • dstr 目標圖像,包含映射后點的顏色。其尺寸和類型與源圖像相同。
  • dstsp 目標圖像,包含映射后點的位置。其尺寸與源圖像相同,類型為 CV_16SC2(即:16位有符號整型的二維坐標)。
  • sp 空間窗口半徑(以像素為單位)。
  • sr 顏色窗口半徑(以顏色差異為單位)。
  • criteria 終止條件。參見 TermCriteria 結構體,用于控制算法迭代的最大次數或收斂精度。
  • stream 用于異步版本的 CUDA 流(Stream)。

代碼示例

#include <opencv2/cudaimgproc.hpp>
#include <opencv2/opencv.hpp>int main()
{// Step 1: 讀取圖像并轉換為 BGRA(4通道)cv::Mat h_src = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png" );if ( h_src.empty() ){std::cerr << "Failed to load image!" << std::endl;return -1;}cv::Mat h_rgba;cv::cvtColor( h_src, h_rgba, cv::COLOR_BGR2BGRA );// Step 2: 上傳圖像到 GPUcv::cuda::GpuMat d_src, d_str, d_sp;d_src.upload( h_rgba );// Step 3: 設置參數int sp = 10;  // 空間窗口大小int sr = 30;  // 顏色窗口大小// Step 4: 執行均值漂移過程cv::cuda::meanShiftProc( d_src, d_str, d_sp, sp, sr );// Step 5: 下載結果cv::Mat h_str, h_sp;d_str.download( h_str );  // 新顏色圖像(CV_8UC4)d_sp.download( h_sp );    // 新空間坐標圖像(CV_32FC4 或類似)// Step 6: 顯示結果cv::imshow( "Original Image", h_src );cv::imshow( "Color Space Result", h_str );cv::waitKey( 0 );return 0;
}

運行結果

在這里插入圖片描述

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

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

相關文章

硬件I2C和軟件I2C的區別

硬件I2C和軟件I2C的區別 一、硬件I2C 1、硬件IC的局限性及學習意義 盡管硬件IC外設在STM32等微控制器中提供了標準化的通信支持&#xff0c;但在實際應用中&#xff0c;其穩定性可能存在問題。例如&#xff0c;某些情況下外設會因事件檢測異常而進入死鎖狀態&#xff0c;僅能…

推薦12個wordpress企業網站模板

WordPress企業網站模板是一種專為企業網站設計的WordPress主題&#xff0c;旨在幫助企業創建專業、美觀且易于管理的網站。這些模板通常具備響應式設計、SEO優化、多語言支持等功能&#xff0c;能夠滿足不同行業和企業的需求。 WordPress企業網站模板的適用場景 企業官網&…

68道Hbase高頻題整理(附答案背誦版)

簡述什么是Hbase數據庫&#xff1f; Hbase是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統&#xff0c;它利用HBase技術在HDFS上提供了類似于Bigtable的能力。換句話說&#xff0c;Hbase是Apache Hadoop生態系統中的一部分&#xff0c;可以為大數據應用提供快速的隨機…

PyTorch——卷積操作(2)

二維矩陣 [[ ]] 這里面conv2d(N,C,H,W)里面的四個是 N就是batch size也就是輸入圖片的數量&#xff0c;C就是通道數這只是一個二維張量所以通道為1&#xff0c;H就是高&#xff0c;W就是寬&#xff0c;所以是1 1 5 5 卷積核 reshape 第一個參數是batch size樣本數量 第二個參數…

Linux之MySQL安裝篇

1.確保Yum環境是否能正常使用 使用yum環境進行軟件的安裝 yum -y install mysql-server mysql2.確保軟件包已正常完成安裝 3.設置防火墻和selinux配置 ## 關閉防火墻 systemctl stop firewalld## 修該selinux配置 vim /etc/selinux/config 將seliuxenforcing修改為sel…

Devops系列---python基礎篇二

1、列表 1.1 概念 格式&#xff1a; 名稱 [ “元素1”,“元素2”,…] #定義一個列表 computer ["主機","鍵盤","顯示器","鼠標"]類型方法用途查index(“元素”)查看元素索引位置count(“元素”)統計元素出現的次數reverse()倒序排…

LeetCode - 234. 回文鏈表

目錄 題目 快慢雙指針步驟 讀者可能的錯誤寫法 正確的寫法 題目 234. 回文鏈表 - 力扣&#xff08;LeetCode&#xff09; 快慢雙指針步驟 找到鏈表的中點&#xff08;find_mid函數&#xff09;&#xff1a; 使用快慢指針&#xff0c;慢指針每次走一步&#xff0c;快指針…

UniApp 全生命周期鉤子詳解

&#x1f449; 整理不易&#xff0c;如果本文對你有幫助&#xff0c;歡迎點個【贊 &#x1f44d;】【收藏 ?】【關注 &#x1f9e1;】 后續我們還將繼續分享實用的 UniApp 教程&#xff0c;比如&#xff1a; 文件上傳全局請求封裝狀態管理動態路由等… &#x1f4ee; 有任何…

探索NautilusTrader:下一代開源算法交易平臺的革命性突破

在金融科技的浪潮中,量化交易領域正經歷一場由開源技術驅動的變革。NautilusTrader(https://github.com/nautechsystems/nautilus_trader)作為一款高性能、生產級的算法交易平臺,正以其創新的設計理念和強大的技術架構重塑開發者的策略研發流程。 一、核心定位:打破回測與…

QT開發技術【ffmpeg + QAudioOutput】音樂播放器

一、 介紹 使用ffmpeg 4.2.2 在數字化浪潮席卷全球的當下&#xff0c;音視頻內容猶如璀璨繁星&#xff0c;點亮了人們的生活與工作。從短視頻平臺上令人捧腹的搞笑視頻&#xff0c;到在線課堂中知識淵博的專家授課&#xff0c;再到影視平臺上扣人心弦的高清大片&#xff0c;音…

[論文閱讀] (38)基于大模型的威脅情報分析與知識圖譜構建論文總結(讀書筆記)

《娜璋帶你讀論文》系列主要是督促自己閱讀優秀論文及聽取學術講座&#xff0c;并分享給大家&#xff0c;希望您喜歡。由于作者的英文水平和學術能力不高&#xff0c;需要不斷提升&#xff0c;所以還請大家批評指正&#xff0c;非常歡迎大家給我留言評論&#xff0c;學術路上期…

python批量解析提取word內容到excel

# 基于Python實現Word文檔內容批量提取與Excel自動化存儲 ## 引言 在日常辦公場景中&#xff0c;常需要從大量Word文檔中提取結構化數據并整理到Excel表格中。傳統手動操作效率低下&#xff0c;本文介紹如何通過Python實現自動化批處理&#xff0c;使用python-docx和openpyxl…

win32相關(遠程線程和遠程線程注入)

遠程線程和遠程線程注入 CreateRemoteThread函數 作用&#xff1a;創建在另一個進程的虛擬地址空間中運行的線程 HANDLE CreateRemoteThread([in] HANDLE hProcess, // 需要在哪個進程中創建線程[in] LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全…

Flyway

Flyway 是一個強大的數據庫版本控制和遷移工具&#xff0c;主要用于管理數據庫結構的變更和演進。 核心作用 1. 數據庫版本控制 追蹤數據庫變更&#xff1a;記錄每次數據庫結構的修改版本管理&#xff1a;為每個變更分配版本號變更歷史&#xff1a;完整記錄數據庫演進過程 …

【深尚想】OPA855QDSGRQ1運算放大器IC德州儀器TI汽車級高速8GHz增益帶寬的全面解析

1. 元器件定義與核心特性 OPA855QDSGRQ1 是德州儀器&#xff08;TI&#xff09;推出的一款 汽車級高速運算放大器&#xff0c;專為寬帶跨阻放大&#xff08;TIA&#xff09;和電壓放大應用優化。核心特性包括&#xff1a; 超高速性能&#xff1a;增益帶寬積&#xff08;GBWP&a…

機器學習實驗八--基于pca的人臉識別

基于pca的人臉識別 引言&#xff1a;pca1.pca是什么2.PCA算法的基本步驟 實例&#xff1a;人臉識別1.實驗目的2.實現步驟3.代碼實現4.實驗結果5.實驗總結 引言&#xff1a;pca 1.pca是什么 pca是一種統計方法&#xff0c;它可以通過正交變換將一組可能相關的變量轉換成一組線…

【LLIE專題】NTIRE 2025 低照度圖像增強第二名方案

Towards Scale-Aware Low-Light Enhancement via Structure-Guided Transformer Design&#xff08;2025&#xff0c;NTIRE&#xff09; 專題介紹一、研究背景二、SG-LLIE方法1.和Retinexformer方案對比2.總體方案及創新點3.詳細方案3.1 結構先驗提取3.2 網絡結構3.3 損失函數 …

泊松融合的介紹和OpenCV教程

泊松融合 Poisson Blending 簡介 核心思想 泊松融合的目標是在保留剪切圖像的梯度(紋理)信息的同時,使融合結果在邊界區域平滑過渡到目標圖像中。換句話說,它在融合區域中重建一個圖像,使其梯度盡可能接近源圖像的梯度,并且邊界貼合目標圖像。 數學描述 泊松融合將問題…

Unity協程Coroutine與UniTask對比

原理對比 CoroutineUniTask本質IEnumerator 的協作調度器async/await 狀態機&#xff08;IAsyncStateMachine&#xff09;調度方式Unity 內部調用 MoveNext()自建 PlayerLoopRunner 控制狀態推進內存管理引用類型&#xff0c;頻繁分配 GC結構體 UniTask&#xff0c;低 GC 壓力…

MAC軟件打開提示已損壞:“已損壞,打不開。您應將它移到廢紙簍“

打開「終端.app」&#xff0c;輸入以下命令并回車&#xff0c;輸入開機密碼回車 sudo spctl --master-disable 按照上述步驟操作完成后&#xff0c;打開「系統偏好設置」-「安全與隱私」-「通用」&#xff0c;確保已經修改為「任何來源」。 打開「終端.app」&#xff0c;輸入…