skimage.io.imread(), Image.open() 以及 cv2.imread()的区别
我們在進行數據處理的時候,經常會遇到這樣的問題,我應該用什么來打開我的圖片呢?接下來我們就來介紹一下常見的兩種打開圖片的方法,以及區別
1.? img = Image.open(path),這是PIL中的一個處理圖片的函數,使用時需 from PIL import Image
- 首先img的type,這里的img的類型是Image對象,不是普通的數組。
- 其次,圖像通道,我們都知道,一般圖像由三通道構成分別是R、G、B。這里的img通道順序即為RGB,因此在顯示時往往會呈現不同的效果,如果圖像為RGBA格式(這里的A表示透明度),則使用Image方法讀入的是4通道的數據,cv2.imread不具備這種能力。
2. img = cv2.imread(path),這是opencv中的處理圖片的函數,使用時需 import cv2
- 首先img的type,這里的img的type是np.adarray()類型
- 其次,圖像通道,這里的圖像通道順序為BGR
2. img = skimage.io.imread(path),這是skimage包中的讀入圖片的函數,使用時需 import skimage
- 首先img的type,這里的img的type也是np.adarray()類型
- 其次,圖像通道,這里的圖像通道順序為RGB,如果圖像是RGBA格式的話,讀入的也是一個4通道的數據
圖像顯示的時候有兩種方式,plt.imshow(array) 和 cv2.imshow(array)。兩個函數都要求輸入為數組。因此Image讀入的圖片要轉換為數組。plt函數讀入的順序為RGB,cv2.imshow()讀入的順序為BGR。因此Image與plt.imshow()配合使用。cv2自己的一套使用,skimage讀入的數據在顯示時兩種方法都可以使用,但是使用cv2.imshow時要將前兩個通道進行調換。
轉換:
1.Image對象->np.adarray
img = Image.open(path)
img_array = np.array(img)
2.np.adarray->Image對象
img = cv2.imread(path)
img_Image = Image.fromarray(np.uint8(img))
總結
以上是生活随笔為你收集整理的skimage.io.imread(), Image.open() 以及 cv2.imread()的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 查看 .npy文件 和 .
- 下一篇: pytorch对张量的一些常用处理以及n