[Python影象處理] 五.影象融合、加法運算及影象型別轉換
該系列文章是講解Python OpenCV影象處理知識,前期主要講解影象入門、OpenCV基礎用法,中期講解影象處理的各種演算法,包括影象銳化運算元、影象增強技術、影象分割等,後期結合深度學習研究影象識別、影象分類應用。希望文章對您有所幫助,如果有不足之處,還請海涵~
同時推薦作者的C++影象系列知識:
[數字影象處理] 一.MFC詳解顯示BMP格式圖片
[數字影象處理] 二.MFC單文件分割視窗顯示圖片
[數字影象處理] 三.MFC實現影象灰度、取樣和量化功能詳解
[數字影象處理] 四.MFC對話方塊繪製灰度直方圖
[數字影象處理] 五.MFC影象點運算之灰度線性變化、灰度非線性變化、閾值化和均衡化處理詳解
[數字影象處理] 六.MFC空間幾何變換之影象平移、映象、旋轉、縮放詳解
[數字影象處理] 七.MFC影象增強之影象普通平滑、高斯平滑、Laplacian、Sobel、Prewitt銳化詳解
前文參考:
[Python影象處理] 一.影象處理基礎知識及OpenCV入門函式
[Python影象處理] 二.OpenCV+Numpy庫讀取與修改畫素
[Python影象處理] 三.獲取影象屬性、興趣ROI區域及通道處理
[Python影象處理] 四.影象平滑之均值濾波、方框濾波、高斯濾波及中值濾波
本篇文章主要講解Python呼叫OpenCV實現影象融合及加法運算,包括三部分知識:影象融合、影象加法運算、影象型別轉換。全文均是基礎知識,希望對您有所幫助。
1.影象加法運算
2.影象融合
3.影象型別轉換
PS:文章參考自己以前系列影象處理文章及OpenCV庫函式,同時部分參考網易雲視訊,推薦大家去學習。
PSS:2019年1~2月作者參加了CSDN2018年部落格評選,希望您能投出寶貴的一票。我是59號,Eastmount,楊秀璋。投票地址:https://bss.csdn.net/m/topic/blog_star2018/index
一.影象加法運算
1.Numpy庫加法
其運算方法是:目標影象 = 影象1 + 影象2,運算結果進行取模運算。
- 當畫素值<=255時,結果為“影象1+影象2”,例如:120+48=168
- 當畫素值>255時,結果為對255取模的結果,例如:(255+64)%255=64
2.OpenCV加法運算
另一種方法是直接呼叫OpenCV庫實現影象加法運算,方法如下:
目標影象 = cv2.add(影象1, 影象2)
此時結果是飽和運算,即:
- 當畫素值<=255時,結果為“影象1+影象2”,例如:120+48=168
- 當畫素值>255時,結果為255,例如:(255+64) = 255
兩種方法對應的程式碼如下所示:
#encoding:utf-8
import cv2
import numpy as np
import matplotlib.pyplot as plt
#讀取圖片
img = cv2.imread('picture.bmp')
test = img
#方法一:Numpy加法運算
result1 = img + test
#方法二:OpenCV加法運算
result2 = cv2.add(img, test)
#顯示影象
cv2.imshow("original", img)
cv2.imshow("result1", result1)
cv2.imshow("result2", result2)
#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()
輸出結果如下圖所示,其中result1為第一種方法,result2為第二種方法,白色點255更多。
注意:參與運算的影象大小和型別必須一致。下面是對彩色影象進行加法運算的結果。
二.影象融合
影象融合通常是指將2張或2張以上的影象資訊融合到1張影象上,融合的影象含有更多的資訊,能夠更方便人們觀察或計算機處理。如下圖所示,將兩張不清晰的影象融合得到更清晰的圖。
影象融合是在影象加法的基礎上增加了係數和亮度調節量。
- 影象加法:目標影象 = 影象1 + 影象2
- 影象融合:目標影象 = 影象1 * 係數1 + 影象2 * 係數2 + 亮度調節量
主要呼叫的函式是addWeighted,方法如下:
dst = cv2.addWeighter(scr1, alpha, src2, beta, gamma)
dst = src1 * alpha + src2 * beta + gamma
其中引數gamma不能省略。
程式碼如下:
#encoding:utf-8
import cv2
import numpy as np
import matplotlib.pyplot as plt
#讀取圖片
src1 = cv2.imread('test22.jpg')
src2 = cv2.imread('picture.bmp')
#影象融合
result = cv2.addWeighted(src1, 1, src2, 1, 0)
#顯示影象
cv2.imshow("src1", src1)
cv2.imshow("src2", src2)
cv2.imshow("result", result)
#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()
需要注意的是,兩張融合的影象畫素大小需要一致,如下圖所示,將兩張RGB且畫素410*410的影象融合。
設定不同的比例的融合如下所示:
result = cv2.addWeighted(src1, 0.6, src2, 0.8, 10)
三.影象型別轉換
影象型別轉換是指將一種型別轉換為另一種型別,比如彩色影象轉換為灰度影象、BGR影象轉換為RGB影象。OPenCV提供了200多種不同型別之間的轉換,其中最常用的包括3類,如下:
- cv2.COLOR_BGR2GRAY
- cv2.COLOR_BGR2RGB
- cv2.COLOR_GRAY2BGR
程式碼如下所示:
#encoding:utf-8
import cv2
import numpy as np
import matplotlib.pyplot as plt
#讀取圖片
src = cv2.imread('01.bmp')
#影象型別轉換
result = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
#顯示影象
cv2.imshow("src", src)
cv2.imshow("result", result)
#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()
輸出結果如下圖所示:
如果使用通道轉化,則結果如下圖所示:
result = cv2.cvtColor(src, cv2.COLOR_BGR2RGB)
影象處理通常需要將彩色影象轉換為灰度影象再進行後續的操作,更多知識後續將繼續分享,希望對著喜歡,尤其是做影象識別、影象處理的同學。
希望文章對大家有所幫助,如果有錯誤或不足之處,還請海涵。九月份準備出去休婚假了,好好和她享受最幸福的時光,不被工作所煩擾,但每當自己寫完一篇文章或解答一個問題,這種分享知識的快感,真的讓我著迷,這就是知識的魅力,老師的快樂吧!
(By:Eastmount 2018-09-03 下午14點 https://blog.csdn.net/Eastmount/)
相關文章
- [Python影象處理] 六.影象縮放、影象旋轉、影象翻轉與影象平移Python
- [Python影象處理] 九.形態學之影象開運算、閉運算、梯度運算Python梯度
- [Python影象處理] 八.影象腐蝕與影象膨脹Python
- [Python影象處理] 十.形態學之影象頂帽運算和黑帽運算Python
- 影象處理之影象增強
- [Python影象處理] 七.影象閾值化處理及演算法對比Python演算法
- [Python影象處理] 一.影象處理基礎知識及OpenCV入門函式PythonOpenCV函式
- [Python影象處理] 三.獲取影象屬性、興趣ROI區域及通道處理Python
- [影象處理] Python+OpenCV實現車牌區域識別及Sobel運算元PythonOpenCV
- python示例 呼叫影象識別服務識別影象Python
- 數字影象處理DIP
- 實戰 | 用Python做影象處理(一)Python
- MATLAB中的影象融合Matlab
- 影象識別及處理相關資料集介紹
- 影象中的畫素處理
- matlab中將RGB影象轉化為灰度影象Matlab
- [Python影象處理] 四.影象平滑之均值濾波、方框濾波、高斯濾波及中值濾波Python
- 【筆記】基於Python的數字影象處理筆記Python
- 數字影象處理-第一節
- 影象處理庫GPUImage簡單使用GPUUI
- 影象處理1--傅立葉變換(Fourier Transform )ORM
- 影象處理的濾鏡演算法演算法
- [譯]計算機如何高效識別影象?計算機
- 影象處理入門:目標檢測和影象檢索綜述
- Luminar 4 for MacOS影象後期處理軟體Mac
- Python基礎教程:Day15-影象和辦公文件處理Python
- 繪製影象
- 影象識別sift+bow+svm
- [Python影象處理] 二.OpenCV+Numpy庫讀取與修改畫素PythonOpenCV
- 10 個 Python 影象編輯工具Python
- 影象二值化(python+opencv)PythonOpenCV
- 如何在Tensorflow.js中處理MNIST影象資料JS
- 計算機視覺—影象特效(3)計算機視覺特效
- Opencv-Python 影象透視變換cv2.warpPerspectiveOpenCVPython
- 阿里AI獲影象識別冠軍 百萬影象識別演算法可跑在手機上阿里AI演算法
- activity影象亂碼
- 值得珍藏機器視覺10大常用影象處理庫視覺
- 【影象處理】人臉美顏演算法初次嘗試演算法