OpenCV圖像加權函數:addWeighted

1 addWeighted函數

在OpenCV 里,addWeighted 函數的作用是對兩個圖像進行加權求和,常用于圖像融合、圖像過渡等場景。函數如下:

cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]])

2 參數解釋

  • src1:第一個輸入圖像。
  • alpha:第一個輸入圖像的權重,取值范圍是 0 到 1。
  • src2:第二個輸入圖像,它的大小和通道數必須與 src1 相同。
  • beta:第二個輸入圖像的權重,取值范圍是 0 到 1。
  • gamma:標量值,添加到加權和中(通常用于亮度調整)。
  • dst:輸出圖像(可選參數,直接通過返回值獲取)。
  • dtype:輸出圖像的可選深度,若未指定,則使用輸入圖像的深度。

該函數將兩個圖像按權重相加,實現圖像的線性混合,其數學公式為:
d s t = α ? s r c 1 + β ? s r c 2 + γ dst = \alpha * src1 + \beta * src2 + \gamma dst=α?src1+β?src2+γ

3 注意

  1. 圖像尺寸和通道數src1src2 必須具有相同的尺寸和通道數,否則會報錯。
  2. 權重和alpha + beta 不需要等于 1,但若想實現透明度混合(如 alpha + beta = 1),需自行控制。
  3. 數據類型:若輸入為 uint8 類型,結果會自動截斷到 [0, 255] 范圍(飽和操作)。
  4. gamma 的作用:用于調整輸出圖像的亮度(例如,gamma=10 會使整體亮度增加)。
    • 若 alpha + beta > 1,圖像可能過曝(值被截斷到 255)。
    • 若 gamma > 0,整體亮度增加;若 gamma < 0,亮度降低。
  5. cv2.add() 的區別cv2.add() 是直接相加(無權重),而 addWeighted() 允許更靈活的線性組合。

4 函數原型

def addWeighted(src1: Mat, alpha, src2: Mat, beta, gamma, dts: Mat = ..., dtype=...) 
from __doc__"""'addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) -> dst  . @brief Calculates the weighted sum of two arrays.   . The function addWeighted calculates the weighted sum of two arrays as follows:                          . \\f[\\texttt{dst} (I)= \\texttt{saturate} ( \\texttt{src1} (I)* \\texttt{alpha} +  \\texttt{src2} (I)* \\texttt{beta} +  \\texttt{gamma} )\\f] . where I is a multi-dimensional index of array elements. In case of multi-channel arrays, each. channel is processed independently.   . The function can be replaced with a matrix expression:   . @code{.cpp}       . dst = src1*alpha + src2*beta + gamma;   . @endcode   . @note Saturation is not applied when the output array has the depth CV_32S. You may even get   . result of an incorrect sign in the case of overflow.   . @param src1 first input array.   . @param alpha weight of the first array elements.  . @param src2 second input array of the same size and channel number as src1.               . @param beta weight of the second array elements.  . @param gamma scalar added to each sum.   . @param dst output array that has the same size and number of channels as the input arrays.  . @param dtype optional depth of the output array; when both input arrays have the same depth, dtype   . can be set to -1, which will be equivalent to src1.depth().   . @sa  add, subtract, scaleAdd, Mat::convertTo'"""pass

5 函數應用

  1. 圖像疊加:例如,在制作幻燈片過渡效果時,就可以使用該函數實現圖像的平滑過渡:通過調整 alphabeta 實現淡入淡出效果。

  2. ROI 混合:結合掩碼(mask)對局部區域進行混合:

roi = img1[y:y+h, x:x+w]
blended_roi = cv2.addWeighted(roi, 0.5, img2_roi, 0.5, 0)
img1[y:y+h, x:x+w] = blended_roi

6 示例代碼

代碼如下:

import cv2# 讀取兩張圖像
image1 = cv2.imread('image1.jpg')
image2 = cv2.imread('image2.png')# 定義權重
alpha = 0.7
beta = 0.3
gamma = 0# 進行加權求和
result = cv2.addWeighted(image1, alpha, image2, beta, gamma)# 顯示結果
cv2.imshow("Touxiang", image1)
cv2.imshow("Zi", image2)
cv2.imshow('Weighted Image', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

通過以上代碼,可以將兩張圖片融合,配置不同的alpha和beta值,可以得到不同融合效果。

融合前:
在這里插入圖片描述
融合后:
在這里插入圖片描述

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

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

相關文章

Tcp網絡通信的基本流程梳理

先來一張經典的流程圖 接下介紹一下大概流程&#xff0c;各個函數的參數大家自己去了解加深一下印象 服務端流程 1.創建套接字&#xff1a;使用 socket 函數創建一個套接字&#xff0c;這個套接字后續會被用于監聽客戶端的連接請求。 需要注意的是&#xff0c;服務端一般有倆…

mysql學習-刪除數據(drop、truncate、delete)

1、概述 drop、truncate、delete都可以刪除mysql中的數據&#xff0c;但它們的作用范圍和操作方式有很大的不同。 2、詳細區別 2.1、drop 特點&#xff1a; 1、速度快 2、會刪除表數據&#xff0c;還會刪除表結構&#xff0c;包括與該表相關的所有數據&#xff0c;索引&…

編程自學指南:java程序設計開發,網絡編程基礎,TCP編程,UDP編程,HTTP客戶端開發

編程自學指南&#xff1a;java程序設計開發&#xff0c;網絡編程基礎 學習目標&#xff1a; 理解網絡協議&#xff08;TCP/IP、UDP&#xff09;的核心概念 掌握Socket編程實現客戶端與服務端通信 能夠通過多線程處理并發網絡請求 開發簡單的網絡應用&#xff08;如聊天程序…

leecode797.所有可能的路徑

深度優先搜索 class Solution { private:vector<vector<int>> result;vector<int> temp;void allPathsSourceTarget(vector<vector<int>> &graph,int v){if(vgraph.size()-1)result.push_back(temp);else{for(auto& adjVertex:graph[v]…

第八節:紅黑樹(初階)

【本節要點】 紅黑樹概念紅黑樹性質紅黑樹結點定義紅黑樹結構紅黑樹插入操作的分析 一、紅黑樹的概念與性質 1.1 紅黑樹的概念 紅黑樹 &#xff0c;是一種 二叉搜索樹 &#xff0c;但 在每個結點上增加一個存儲位表示結點的顏色&#xff0c;可以是 Red和 Black 。 通過對 任何…

微信小程序threejs三維開發

微信小程序threejs開發 import * as THREE from three; const { performance, document, window, HTMLCanvasElement, requestAnimationFrame, cancelAnimationFrame, core, Event, Event0 } THREE .DHTML import Stats from three/examples/jsm/libs/stats.module.js; im…

jupyter無法轉換為PDF,HTMLnbconvert failed: Pandoc wasn‘t found.

無法轉為PDF 手動下載工具 https://github.com/jgm/pandoc/releases/tag/3.6.3 似乎跟我想的不大一樣&#xff0c;還有新的報錯 https://nbconvert.readthedocs.io/en/latest/install.html#installing-tex 不知道下的啥玩意兒 sudo apt-get install texlive-xetex texlive-fon…

關于PLC、電纜線材及氣缸選型的詳細教程

以下是關于PLC、電纜線材及氣缸選型的詳細教程&#xff0c;整合了多個專業來源的核心要點&#xff1a; 一、PLC選型要點 生產廠家選擇 日系PLC&#xff08;如三菱FX系列、歐姆龍CP1系列&#xff09;適合獨立設備或簡單控制系統&#xff0c;性價比高。歐美系PLC&#xff08;如西…

使用 Excel 實現績效看板的自動化

引言 在日常工作中&#xff0c;團隊的績效監控和管理是確保項目順利進行的重要環節。然而&#xff0c;面臨著以下問題&#xff1a; ?數據分散&#xff1a;系統中的數據難以匯總&#xff0c;缺乏一個宏觀的團隊執行情況視圖。?看板缺失&#xff1a;系統本身可能無法提供合適…

02 windows qt配置ffmpeg開發環境搭建

版本說明 首先我使用ffmpeg版本是4.2.1 QT使用版本5.14.2 我選擇是c編譯 在02Day.pro??添加ffmpeg頭?件和庫?件路徑 win32 { INCLUDEPATH $$PWD/ffmpeg-4.2.1-win32-dev/include LIBS $$PWD/ffmpeg-4.2.1-win32-dev/lib/avformat.lib \$$PWD/ffmpeg-4.2.1-win32-dev/l…

Dask:Python高效并行計算利器

Dask&#xff1a;Python高效并行計算利器 Dask是一個開源的Python并行計算庫&#xff0c;旨在擴展Python常用工具&#xff08;如NumPy、Pandas、Scikit-learn等&#xff09;的功能&#xff0c;使其能夠處理更大規模的數據集和更復雜的計算任務。它通過動態任務調度和分布式計算…

掌握市場先機:9款銷售渠道管理工具深度測評

本文主要介紹了以下9款銷售渠道管理工具&#xff1a;1.紛享銷客&#xff1b; 2.銷幫幫&#xff1b; 3.小滿CRM&#xff1b; 4.有贊&#xff1b; 5.Oracle NetSuite&#xff1b; 6.Salesforce Sales Cloud&#xff1b; 7.Cin7&#xff1b; 8.Pipedrive&#xff1b; 9.BigCommerc…

C語言基礎知識04

指針 指針概念 指針保存地址&#xff0c;地址是字節的編號 指針類型和保存的地址類型要一直 使用時注意&#xff0c;把地址轉換為&變量的格式來看 int a[3]; a轉為&a[0] 指針的大小 64bit 固定8字節&#xff0c; 32bit 固定4字節 指針…

計算矩陣邊緣元素之和(信息學奧賽一本通-1121)

【題目描述】 輸入一個整數矩陣&#xff0c;計算位于矩陣邊緣的元素之和。所謂矩陣邊緣的元素&#xff0c;就是第一行和最后一行的元素以及第一列和最后一列的元素。 【輸入】 第一行分別為矩陣的行數m和列數n&#xff08;m<100&#xff0c;n<100&#xff09;&#xff0c…

異常(9)

大家好,今天我們來詳細介紹一下異常拋出的知識,在編寫程序時,如果程序中出現錯誤,此時就需要將錯誤的信息告知給調用者,話不多說,來看. 在java中,可以借助throw關鍵字,拋出一個指定的異常對象,將錯誤對象告知給調用者,具體語法如下&#xff1a; throw new xxx("異常產生…

網絡安全就業形勢

網絡安全是一個日益增長的行業&#xff0c;對于打算進入或轉行進入該領域的人來說&#xff0c;制定一個清晰且系統的職業規劃非常重要。2025年&#xff0c;網絡安全領域將繼續發展并面臨新的挑戰&#xff0c;包括不斷變化的技術、法規要求以及日益復雜的威脅環境。 第一部分&am…

3U VPX 國產化板卡FT6678+V7 690T

板卡1、 采用標準3U VPX架構&#xff0c;板上集成1片深圳國微電子SMQ7V690TFFG1761&#xff08;pin-to-pin兼容Xilinx的XC7VX690T-2FFG1761I&#xff09;FPGA&#xff0c;1片國防科大FT-M6678&#xff08;功能兼容TI的TMS320C6678&#xff09;&#xff0c;對外接口RS422、網口…

【數據結構】-哈夫曼樹以及其應用

哈夫曼樹&#xff08;Huffman Tree&#xff09; 1. 哈夫曼樹的定義 哈夫曼樹&#xff08;Huffman Tree&#xff09;是一種 帶權路徑長度最短的二叉樹&#xff0c;常用于數據壓縮和最優前綴編碼。其目標是使得 帶權路徑長度&#xff08;WPL&#xff09;最小。 在信息論和計算…

Linux 命名管道

文章目錄 &#x1f680; 深入理解命名管道&#xff08;FIFO&#xff09;及其C實現一、命名管道核心特性1.1 &#x1f9e9; 基本概念 二、&#x1f4bb; 代碼實現解析2.1 &#x1f4c1; 公共頭文件&#xff08;common.hpp&#xff09;2.2 &#x1f5a5;? 服務器端&#xff08;s…

sap 內存管理與數據共享方式

SAP內存管理 內存是程序之間為了傳遞數據而使用的共享存儲空間 SAP內存分類&#xff1a;1、SAP內存&#xff0c;2、ABAP內存 這兩種內存都是針對同一登錄用戶實現數據共享。 SAP內存&#xff08;SAP Memory&#xff09;和ABAP內存&#xff08;ABAP Memory&#xff09;&…