基於Pyhton的Opencv學習

基於Python的Opencv學習第五天

各位小夥伴們大家好,今天是我學習Opencv的第五天,來看看今天的學習內容吧。

一.圖像類型轉換

這次我先來介紹一下在opencv裏面如何實現圖像類型轉換,首先這個概念很容易懂,就是將圖像由一種類型轉換成另外一種類型。

在opencv中有超過200種圖像的類型轉換,在今天我就介紹幾個常見的類型轉換,如:從原始圖像轉換到灰度圖像,從BGR類型圖像轉換成RGB類型圖像,或者灰度圖像轉換成BGR圖像以及RGB圖像,總之就是幾個不同類型的圖像的相互轉換。
在不同類型的圖像轉換中,我們需要調用的函數是:

cv2.cvtColor(圖像名,需要轉換的類型參數)

在這裏,需要轉換的類型參數有
cv2.COLOR_BGR2GRAY
cv2.COLOR_BGR2RGB
cv2.COLOR_GRAY2BGR

其實不難看出這個參數就是cv2.COLOR_後面加上需要轉換的兩種類型的英文。

來看看代碼和實現結果:

>>> import cv2
>>> a=cv2.imread(r"C:\Users\LT010407\Desktop\2.jpg")
>>> b=cv2.cvtCOLOR(a,cv2.COLOR_BGR2GRAY)
>>>> b=cv2.cvtColor(a,cv2.COLOR_BGR2GRAY)
>>> cv2.imshow("a",a)
>>> cv2.imshow("b",b)

在這裏插入圖片描述
在這裏我們是將RGB圖像轉換成了GRAY圖像,接下來看看將GRAY轉換成RGB的效果。

具體代碼很簡單隻要給b=cv2.cvtColor(a,cv2.COLOR_BGR2GRAY)換成c=cv2.cvtColor(b,cv2.COLOR_GRAY2RGB)從而得到一個新的c圖像是從b的灰度圖像轉到RGB圖像的。

在這裏插入圖片描述

但是我們會發現,從灰度圖像到RGB圖像好像沒有體現出來很大的變化,看上去兩者是一摸一樣,但是來看一下RGB的shape屬性就知道了:

在這裏插入圖片描述
這裏我們看到shape屬性有三個通道,所有的確是RGB圖像,只不過和灰度圖像差別不會很明顯。

二.圖像縮放

我們繼續講一下opencv中對圖像進行的縮放處理,這裏我們需要運用到resize()函數,來看具體語法格式:

dst=cv2.resize(src,dsize[,dst[,fx[,fy[,interpolation]]]])

在這裏面有兩個參數是必備的,所以最簡單的代碼格式是:
dst=cv2.resize(src,dsize)

這裏src代表原始圖像,即我們需要進行處理的圖像
而dsize代表着縮放大小,也就是我們想要進行處理
圖像的縮放大小。

示例:b=cv2.resize(a,(122,122))

這裏值得注意的是第一個122代表着不管原圖像是多少列組成,我們都給縮放到122列,第二個122代表着我們給縮放到122行,即第一個數字代表列,第二個數字代表行。

除了最簡單的代碼格式,我們還可以用另外一種格式來進行圖像縮放:
dst=cv2.resize(src,dsize,fx,fy)

這裏fx指對水平方向進行縮放多少倍,fy指對豎直方向上進行縮放多少倍,這裏兩個數值均和“1”比較。值得注意的是dsize需要寫入值爲None。

示例:b=cv2.resize(a,None,fx=0.5,fy=0.7)

分別在水平方向上縮小到原來的0.5倍,豎直方向上縮小到原來的0.7倍。
這裏我們看到dsize和fx,fy只要設置其中的一組即可,不需要多設置。

來看一下代碼和結果展示:

>>> import cv2
>>> a=cv2.imread(r"C:\Users\LT010407\Desktop\2.jpg")
>>> b=cv2.resize(a,(200,100))
>>> cv2.imshow("a",a)
>>> cv2.imshow("b",b)
>>> 

在這裏插入圖片描述

這裏我們可以看到b圖像爲縮小到只有200列,100行,對比就能理解resize()函數的用法和功能。

>>> import cv2
>>> a=cv2.imread(r"C:\Users\LT010407\Desktop\2.jpg")
>>> rows,cols=a.shape[:2]
>>> size=(round(cols*0.5),round(rows*1.5))
>>> b=cv2.resize(a,size)
>>> cv2.imshow("b",b)

這裏我用了元組的形式來書寫代碼,來看看結果吧:
在這裏插入圖片描述
接下來我們不用dsize,而是用fx,fy,來看看吧。

>>> import cv2
>>> a=cv2.imread(r"C:\Users\LT010407\Desktop\2.jpg")
>>> c=cv2.resize(a,None,fx=0.5,fy=1.3)
>>> cv2.imshow("c",c)
>>> cv2.imshow("a",a)
>>> 

在這裏插入圖片描述
在這裏雖然用來三種方法來給大家展示圖像的縮放,但其實都離不開一個函數resize(),所以大家只要能夠弄明白函數裏面每一個參數的含義就能徹底搞定圖像的縮放。

三.圖像翻轉

剛剛講完了圖像的縮放,我們還能在opencv裏面對圖像進行翻轉,我們需要用到flip()函數,具體格式如下:

dst=cv2.flip(src,flipCode)

老規矩,src指我們需要進行翻轉的圖像

flipCode指我們需要如何進行翻轉,這裏flipCode有三種數據,分別爲:

flipCode=0 以x軸爲對稱軸翻轉(即上下翻轉)
flipCode>0 以y軸爲對稱軸翻轉(即左右翻轉)
flipCode<0 以x軸和y軸爲對稱軸翻轉(即上下翻轉加左右翻轉)

來看看代碼和結果:

>>> import cv2
>>> a=cv2.imread(r"C:\Users\LT010407\Desktop\2.jpg")
>>> b=cv2.flip(a,0)
>>> c=cv2.flip(a,1)
>>> d=cv2.flip(a,-1)
>>> cv2.imshow("a",a)
>>> cv2.imshow("b",b)
>>> cv2.imshow("c",c)
>>> cv2.imshow("d",d)
>>> 

在這裏插入圖片描述
在這裏插入圖片描述

這裏我們可以看到分別進行了上下翻轉,左右翻轉,以及上下,左右翻轉都進行,圖片展示如上兩幅圖。

今天分別講述了圖像的縮放和圖像的翻轉,都是兩個簡單的函數,理解也不太難。那麼今天就到這裏了,我們下一篇博客見!(轉載註明出處)

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