基於Python的Opencv學習

基於Python的Opencv學習第四天

共同學習Opencv的小夥伴們,大家好。今天是我們學習Opencv的第四天了,之前幾篇博客從最基本的像素介紹到圖像的感興趣區,今天來看看我爲大家帶來什麼吧!

一.圖像的加法運算

說到Opencv裏面對圖像進行加法運算,那就要分兩種加法運算,分別是通過numpy包來進行加法運算,和直接Opencv加法運算,在我們瞭解語法之前,還是來看看圖像的加法運算在opencv裏面是如何實現的。

1.加法運算的概念
這裏我們以八位圖像來舉例說明,首先八位圖像在計算機中是以二進制來存放,最小值是0000 0000對應十進制中的0,而最大值是1111 1111對應十進制中的255,一共256中灰度集。在這裏插入圖片描述

2.利用numpy包進行加法運算(取餘運算)
在使用numpy包進行加法運算時,我們用到的語法如下:
結果=圖像1+圖像2

在這裏,兩個圖像的像素點的相加得到的數字<=255時,那麼我們的結果就等於這個數字
如果兩個圖像的像素點的相加得到的數字>255時,那麼我們的結果要對這個數字進行對255的取餘運算。

例如,兩個像素分別爲100和58,那麼100+58=158<255,則結果就等於158;
如果兩個像素分別爲255和58,那麼255+58=(255+58)%255=58,則結果就是58。

3.利用opencv進行加法運算(飽和運算)
在opencv中進行加法運算時,我們需要調用add()函數,其語法如下:
結果=cv2.add(圖像1,圖像2)

這時,結果也分兩種情況
如果和的數值<=255,那麼結果爲該數值;
如果和的數值>255,那麼結果只能爲255。

在這裏,我們稱爲飽和運算,即不管加起來的數值等於多少,他最大隻能是255。
(普及一下,opencv中0代表黑色,255代表白色,越靠近0則黑色的程度越深,越靠近255,則白色的程度越深。)

注意!!!參與運算的圖像大小,類型必須保持一致!!!

3.代碼實現
接下來我們通過代碼來演示一下圖像的加法運算。

>>> import cv2
>>> import numpy as np
>>> img=cv2.imread(r"C:\Users\LT010407\Desktop\2.jpg")
>>> pic=img
>>> cv2.imshow("img",img)
>>> i=pic+img
>>> cv2.imshow("i",i)
>>> k=cv2.add(img,pic)
>>> cv2.imshow("k",k)
>>> 

這裏我們i是用numpy包進行的運算,k是在opencv裏面運用了add()函數進行的運算,來看看結果!
在這裏插入圖片描述

二.圖像融合

1.圖像融合的概念
首先來介紹一下圖像融合的概念,指的是將2張或2張以上的圖像信息融合到1張圖像上,這裏小夥伴們就疑惑了,這個和圖像相加不就是一樣的嗎,其實不同,融合的圖像含有更多的信息,能夠更方便人來觀察或者計算機處理。在這裏插入圖片描述
如圖,用兩個白色框框起來的兩幅圖像區域都是有部分不清晰,但是通過圖像融合,我們能夠得到一幅清晰的圖像,這就是圖像的融合。

2.圖像融合的語法
這裏我只介紹了將兩幅圖像以不同權重的方式給加在一起,我們需要調用addWeighted()函數,來看語法:

dst=cv2.addWeighted(src1,alpha,src2,beta,gamma)

而dst=src1alpha+src2beta+gamma,如果用中文表示就是:
結果圖像=圖像1係數1+圖像2係數2+亮度調節量

這裏係數指的是圖像的透明度,如果係數越大,則該圖像佔比的透明度越大,顯示在結果圖像上時,該圖像就越深,而亮度調節量就是用來調節結果圖像的亮度,值越大就越亮,最小是0,即不做改變,但是參數gamma(亮度調節量)不能省略。

3.代碼和結果
剛剛介紹了圖像融合的語法,老規矩,上代碼和結果:

impore cv2
a=cv2.imread(r"C:\Users\LT010407\Desktop\3.jpg")
b=a=cv2.imread(r"C:\Users\LT010407\Desktop\3.jpg")
result=cv2.addWeighted(a,0.6,b,0.3,0)
cv2.imshow("result",result)

在這裏插入圖片描述
在這裏我們可以看見,這個lena圖像因爲我調的是0.3,所有就更淡一點,而那個boat圖像我調到0.6,所有就更重一點,亮度調節是0。

好的,今天的內容就講到這裏了吧,下一篇博客見。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章