python中讀取圖片的6種方式
作者:小伍哥
python進行圖片處理,第一步就是讀取圖片,這裡給大家整理了6種圖片的讀取方式,並將讀取的圖片裝換成numpy。ndarray()格式。
首先需要準備一張照片,假如你有女朋友的話,可以用女朋友的,沒有的話,那還學啥python,趕緊找物件去吧!
圖片路徑:
dirpath = “C:/Users/wuzhengxiang/Desktop/beatgirl。jpg”
一、OpenCV讀取圖片
OpenCV讀取的圖片,直接就是numpy。ndarray格式,無需轉換
import cv2
img_cv = cv2。imread(dirpath)#讀取資料
print(“img_cv:”,img_cv。shape)
img_cv: (1856, 2736, 3)
print(“img_cv:”,type(img_cv))
img_cv:
#看下讀取的資料怎麼樣
img_cv
array([[[ 0, 3, 0],
[ 11, 20, 17],
。。。,
[ 5, 23, 16]],
[[ 0, 2, 0],
。。。,
[ 5, 23, 16]]]
二、PIL讀取圖片
PIL讀取的圖片並不是直接的numpy。ndarray格式,需要進行轉換
from PIL import Image
import numpy as np
img_PIL = Image。open(dirpath)#讀取資料
print(“img_PIL:”,img_PIL)
img_PIL: size=2736x1856 at 0x2202A8FC108> print(“img_PIL:”,type(img_PIL)) img_PIL: #將圖片轉換成np。ndarray格式 img_PIL = np。array(img_PIL) print(“img_PIL:”,img_PIL。shape) img_PIL: (1856, 2736, 3) print(“img_PIL:”,type(img_PIL)) img_PIL: 三、keras讀取圖片 keras深度學習的框架,裡面也是內建了讀取圖片的模組,該模組讀取的也不是陣列格式,需要進行轉換。 from keras。preprocessing。image import array_to_img, img_to_array load_imgimg_keras = load_img(dirpath)#讀取資料 print(“img_keras:”,img_keras) img_keras: size=2736x1856 at 0x2201D184BC8> print(“img_keras:”,type(img_keras)) img_keras: #使用keras裡的img_to_array() img_keras = img_to_array(img_keras) print(“img_keras:”,img_keras。shape) img_keras: (1856, 2736, 3) print(“img_keras:”,type(img_keras)) img_keras: #可以使用使用np。array()進行轉換 mg_keras= np。array(img_keras) 四、skimage讀取圖片 scikit-image是基於scipy的一款影象處理包,它將圖片作為numpy陣列進行處理,讀取的資料正好是numpy。ndarray格式。 import skimage。io as io img_io = io。imread(dirpath)#讀取資料 print(“img_io :”,img_io 。shape) img_io : (1856, 2736, 3) print(“img_io :”,type(img_io )) img_io : 五、matplotlib.image讀取圖片 利用matplotlib。image讀取的圖片,直接就生成了陣列格式 import matplotlib。image as mpig img_mpig = mpig。imread(dirpath)#讀取資料 print(“img_mpig :”,img_mpig 。shape) img_mpig : (1856, 2736, 3) print(“img_mpig :”,type(img_mpig )) img_mpig : 六、matplotlib.pyplot讀取圖片 利用matplotlib。pyplot讀取的圖片,同樣也是直接就生成了陣列格式 import matplotlib。pyplot as plt img_plt = plt。imread(dirpath) print(“img_plt :”,img_plt 。shape) img5: (1856, 2736, 3) print(“img_plt :”,type(img_plt )) img5: 七、顯示讀取的圖片 同樣,使用matplotlib 包可以打印出來讀取的照片,要列印上述案例中讀取的照片,只需要下面兩行程式碼就行了。 plt。imshow(img_plt , cmap=plt。cm。binary) plt。show() 圖片三通道的,列印其中一個通道 plt。imshow(img_plt[:,:,1] , cmap=plt。cm。binary) plt。show() 當然,我們可以隨便構造一個數組,可以顯示出來 digit = [[135,26,33,12],[14,27,43,190],[120,124,134,205]] plt。imshow(digit, cmap=plt。cm。binary) plt。show()