OpenCV CUDA模塊圖像處理------圖像融合函數blendLinear()

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

算法描述

該函數執行 線性融合(加權平均) 兩個圖像 img1 和 img2,使用對應的權重圖 weights1 和 weights2。

融合公式如下:
r e s u l t ( x , y ) = i m g 1 ( x , y ) ? w e i g h t s 1 ( x , y ) + i m g 2 ( x , y ) ? w e i g h t s 2 ( x , y ) result(x,y)=img1(x,y)?weights1(x,y)+img2(x,y)?weights2(x,y) result(x,y)=img1(x,y)?weights1(x,y)+img2(x,y)?weights2(x,y)
每個像素點根據各自的權重進行線性組合。

函數原型

void cv::cuda::blendLinear 	
(InputArray  	img1,InputArray  	img2,InputArray  	weights1,InputArray  	weights2,OutputArray  	result,Stream &  	stream = Stream::Null() 
) 		

參數

參數名說明
img1輸入圖像 1 第一幅輸入圖像
img2輸入圖像 2 第二幅輸入圖像,必須與 img1 尺寸和類型相同
weights1權重圖 1 與 img1 對應的權重圖,單通道浮點型(CV_32F)
weights2權重圖 2 與 img2 對應的權重圖,單通道浮點型(CV_32F)
result輸出圖像 輸出結果,與輸入圖像大小和類型一致
stream流對象 用于異步執行的 CUDA 流。默認為 Stream::Null(),即同步執行

代碼示例

#include <opencv2/opencv.hpp>
#include <opencv2/cudaimgproc.hpp>int main() {// Step 1: 加載兩幅圖像cv::Mat img1 = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/stich1.png");cv::Mat img2 = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/stich2.png");if (img1.empty() || img2.empty()) {std::cerr << "Failed to load images!" << std::endl;return -1;}// Step 2: 確保圖像尺寸一致cv::resize(img2, img2, img1.size());// Step 3: 創建權重圖(例如:漸變效果)cv::Mat weight1(img1.size(), CV_32F, 0.5f);  // 全圖權重 0.5cv::Mat weight2 = 1.0f - weight1;             // 反向權重圖// Step 4: 上傳數據到 GPUcv::cuda::GpuMat d_img1, d_img2, d_weight1, d_weight2, d_result;d_img1.upload(img1);d_img2.upload(img2);d_weight1.upload(weight1);d_weight2.upload(weight2);d_result.create(img1.size(), img1.type());// Step 5: 執行線性融合cv::cuda::blendLinear(d_img1, d_img2, d_weight1, d_weight2, d_result);// Step 6: 下載并顯示結果cv::Mat result;d_result.download(result);cv::imshow("Original Image 1", img1);cv::imshow("Original Image 2", img2);cv::imshow("Blended Image", result);cv::waitKey(0);return 0;
}

運行結果

在這里插入圖片描述

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

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

相關文章

【Typst】6.布局函數

概述 上節我們介紹了文檔結構元素的函數&#xff0c;本節介紹一些控制布局使用的函數&#xff0c;掌握他們之后你可以更進一步的控制頁面元素的布局。 系列目錄 1.Typst概述2.Typst標記語法和基礎樣式3.Typst腳本語法4.導入、包含和讀取5.文檔結構元素與函數6.布局函數 對齊…

【音視頻】FFmpeg 編碼H265

一、概述 實現了讀入本地yuv文件&#xff0c;通過libx265編碼為H265格式&#xff0c;并存儲到本地文件中 二、實現流程 準備文件 在build路徑下準備yuv文件 在項目中添加文件參數&#xff0c;輸出為h265文件&#xff0c;使用libx265編碼 初始化解碼器 通過傳進來的libx265…

ECreator低代碼平臺-文件管理器的使用說明

Ecreator是中山華拓信息技術公司旗下的一款低代碼平臺&#xff0c;主要功能包含&#xff1a;文件管理器&#xff0c;表單數據管理器&#xff0c;儀表盤設計界面&#xff0c;內容頁面自定義等功能&#xff0c;可以用于快速低成本的構建網站和企業內部應用。 下面介紹一下文件管…

高考加油!UI界面生成器!

這個高考助力標語生成器具有以下特點&#xff1a; 視覺設計&#xff1a;采用了藍色為主色調&#xff0c;搭配漸變背景和圓形裝飾元素&#xff0c;營造出寧靜而充滿希望的氛圍&#xff0c;非常適合高考主題。 標語生成&#xff1a;內置了超過 100 條精心挑選的高考加油標語&a…

阿姆達爾定律的演進:古斯塔夫森定律

前言 在上一篇文章《使用阿姆達爾定律來提升效率》中提到的阿姆達爾定律前提是假設問題的規模保持不變&#xff0c;并且給定一臺速度更快的機器&#xff0c;目標是更快地解決問題。然而&#xff0c;在大多數情況下&#xff0c;這并不完全正確。當有一臺更快的機器時&#xff0…

【RabbitMQ】- Channel和Delivery Tag機制

在 RabbitMQ 的消費者代碼中&#xff0c;Channel 和 tag 參數的存在是為了實現消息確認機制&#xff08;Acknowledgment&#xff09;和精細化的消息控制。 Channel 參數 作用 Channel 是 AMQP 協議的核心操作接口&#xff0c;通過它可以直接與 RabbitMQ 交互&#xff1a; 手…

核心機制:流量控制

搭配滑動窗口使用的 窗口大小 窗口越大,傳輸速度就越快,但是也不能無限大,太大了,對于可靠性會有影響 比如發生方以非常快的速度,發送,接收方的處理速度跟不上,也就會導致有效數據被接受方丟棄(又得重傳) 流量控制,就是根據接收方的處理能力(如何衡量?),干預到發送方的發送…

深度強化學習賦能城市消防優化,中科院團隊提出DRL新方法破解設施配置難題

在城市建設與發展中&#xff0c;地理空間優化至關重要。從工業園區選址&#xff0c;到公共服務設施布局&#xff0c;它都發揮著關鍵作用。但傳統求解方法存在諸多局限&#xff0c;如今&#xff0c;深度學習技術為其帶來了新的轉機。 近日&#xff0c;在中國地理學會地理模型與…

安科電動機保護器通過ModbusRTU轉profinet網關與PLC通訊

安科電動機保護器通過ModbusRTU轉profinet網關與PLC通訊 在工業自動化領域&#xff0c;設備間的通信和數據交互至關重要。Modbus作為一種常用的通訊協議&#xff0c;廣泛應用于各種工業現場&#xff1b;而Profinet則憑借其高效、實時性&#xff0c;在工業以太網通訊中占據重要…

python直方圖

在Python中&#xff0c;繪制直方圖&#xff08;Histogram&#xff09;是一項非常常見的任務&#xff0c;通常用于數據可視化&#xff0c;以展示數據的分布情況。Python中有多種庫可以繪制直方圖&#xff0c;其中最常用的兩個庫是Matplotlib和Seaborn。此外&#xff0c;Pandas庫…

在Oxygen編輯器中使用DeepSeek

羅馬尼亞公司研制開發的Oxygen編輯器怎樣與國產大模型結合&#xff0c;這是今年我在tcworld大會上給大家的分享&#xff0c;需要ppt的朋友請私信聯系 - 1 - Oxygen編輯器中的人工智能助手 Oxygen編輯器是羅馬尼亞的Syncro Soft公司開發的一款結構化文檔編輯器。 它是用來編寫…

neo4j 5.19.0安裝、apoc csv導入導出 及相關問題處理

前言 突然有需求需要用apoc 導入 低版本的圖譜數據&#xff0c;網上資料又比較少&#xff0c;所以就看官網資料并處理了apoc 導入的一些問題。 相關地址 apoc 官方安裝網址 apoc 官方導出csv 教程地址 apoc 官方 導入 csv 地址 docker 安裝 執行如下命令啟動鏡像 doc…

macos常見且應該避免被覆蓋的系統環境變量(避免用 USERNAME 作為你的自定義變量名)

文章目錄 macos避免用 USERNAME 作為你的自定義變量名macos常見且應該避免被覆蓋的系統環境變量 macos避免用 USERNAME 作為你的自定義變量名 問題&#xff1a; 你執行了&#xff1a;export USERNAME“admin” 然后執行&#xff1a;echo ${USERNAME} 輸出卻是&#xff1a;xxx …

Python訓練打卡Day41

簡單CNN 知識回顧 數據增強卷積神經網絡定義的寫法batch歸一化&#xff1a;調整一個批次的分布&#xff0c;常用與圖像數據特征圖&#xff1a;只有卷積操作輸出的才叫特征圖調度器&#xff1a;直接修改基礎學習率 卷積操作常見流程如下&#xff1a; 1. 輸入 → 卷積層 → Batch…

【親測有效】Mybatis-Plus中更新字段為null

Mybatis-Plus中更新字段為null 遇到問題 Mybatis-Plus更新的默認行為如下: Mybatis-Plus默認如果某個字段為null, 默認不更新這個字段, 例如有個Double類型的字段, 當前數據庫數據為10, 然后傳參時當前字段為null, 實際上Mybatis-Plus是不會覆蓋該字段為null的 在傳參的時候如…

如何使用插件和子主題添加WordPress自定義CSS(附:常見錯誤)

您是否曾經想更改網站外觀的某些方面&#xff0c;但不知道怎么做&#xff1f;有一個解決方案——您可以將自定義 CSS&#xff08;層疊樣式表&#xff09;添加到您的WordPress網站&#xff01; 在本文中&#xff0c;我們將討論您需要了解的有關CSS的所有知識以及如何使用它來修…

左值引用和右值引用

一、基本概念 左值&#xff08;lvalue&#xff09;和右值&#xff08;rvalue&#xff09; 左值指的是有確定存儲位置&#xff08;地址&#xff09;的對象&#xff0c;通常可以出現在賦值語句左側。例如&#xff1a;變量名、解引用指針得到的對象、數組元素等都屬于左值。 右值…

django入門-orm數據庫操作

一&#xff1a;下載數據庫依賴項mysqlclient pip install mysqlclient 二&#xff1a;django配置文件配置數據庫鏈接 路徑&#xff1a;mysite2\mysite2\settings.py DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: data, # 數據庫名稱USER: root, …

國標GB28181設備管理軟件EasyGBS視頻平臺筑牢文物保護安全防線創新方案

一、方案背景? 文物作為人類文明的珍貴載體&#xff0c;具有不可再生性。當前&#xff0c;盜竊破壞、游客不文明行為及自然侵蝕威脅文物安全&#xff0c;傳統保護手段存在響應滯后、覆蓋不全等局限。隨著5G與信息技術發展&#xff0c;基于GB28181協議的EasyGBS視頻云平臺&…

NetSuite Bundle - Dashboard Refresh

兒童節快樂&#xff01; 今朝發一個Bundle&#xff0c;解決一個NetSuite Dashboard的老問題。出于性能上的考慮&#xff0c;NetSuite的Dashboard中的Portlet&#xff0c;只能逐一手工刷新。有人基于瀏覽器做了插件&#xff0c;可以進行自動刷新。但是在我們做項目部署時&#…