Python中讀取,顯示,保存圖片的方法


一 opencv

import cv2 as cv # load 
img = cv.imread(imagepath) # shape=(height, width, channel)
h,w,c = img.shape # show
cv.imshow('window_title', img) # save
cv.imwrite(savepath, img)

二 matplotlib

import matplotlib.pyplot as plt # plt 用於顯示圖片
import matplotlib.image as mpimg # mpimg 用於讀取圖片
import numpy as np # load
img = mpimg.imread('dog.jpg') # 此時 img 就已經是一個 np.array 了,可以對它進行任意處理 # height, width, channel=(360, 480, 3)
h,w,c = img.shape # show
plt.imshow(img) # 顯示圖片
plt.axis('off') # 不顯示坐標軸
plt.show() # save # 適用於保存任何 matplotlib 畫出的圖像,相當於一個 screencapture
plt.savefig('fig_dog.png')

注:

(1)plt.imshow(image)中的圖片的數據類型可以使np.array類型

         imshow()函數格式為:matplotlib.pyplot.imshow(Xcmap=None)

         X: 要繪制的圖像或數組。

         cmap: 顏色圖譜(colormap), 默認繪制為RGB(A)顏色空間。

         其它可選的顏色圖譜如下列表:

顏色圖譜 描述
autumn 紅-橙-黃
bone 黑-白,x線
cool 青-洋紅
copper 黑-銅
flag 紅-白-藍-黑
gray 黑-白
hot 黑-紅-黃-白
hsv hsv顏色空間, 紅-黃-綠-青-藍-洋紅-紅
inferno 黑-紅-黃
jet 藍-青-黃-紅
magma 黑-紅-白
pink 黑-粉-白
plasma 綠-紅-黃
prism  紅-黃-綠-藍-紫-...-綠模式
spring 洋紅-黃
summer 綠-黃
viridis 藍-綠-黃
winter 藍-綠

用的比較多的有gray,jet等,如:

plt.imshow(image,plt.cm.gray) plt.imshow(img,cmap=plt.cm.jet)

(2)mpimg 既提供了加載圖像函數imread,又提供了保存圖像函數imsave

(3) plt.savefig函數 可以將顯示在fig中圖像保存下來

 延伸:圖像縮放顯示

from scipy import misc lena_new_sz = misc.imresize(img, 0.5) # 第二個參數如果是整數,則為百分比,如果是tuple,則為輸出圖像的尺寸
plt.imshow(img_new_sz) plt.axis('off') plt.show()

三  PIL

PIL加載顯示圖像有兩種方法:

其一:調用操作系統自帶的圖片瀏覽器來打開圖片

from PIL import Image # load
im = Image.open('cat.jpg') # show
im.show() """ # 返回 image's size w,h = (480, 360) w,h = img.size # PIL.JpegImagePlugin.JpegImageFile type(img) # 直接調用Image類的save方法 img.save('new_cat.png') """

其二:讓程序來繪制圖片

from PIL import Image import matplotlib.pyplot as plt img=Image.open('/home/wanghao/Pictures/001.jpg') plt.figure("head") plt.imshow(img) plt.show()

總結一些繪制和顯示圖片常用的一些函數:

函數名 功能 調用格式
figure 創建一個顯示窗口 plt.figure(num=1,figsize=(8,8)
imshow 繪制圖片 plt.imshow(image)
show 顯示窗口 plt.show()
subplot 划分子圖 plt.subplot(2,2,1)
title 設置子圖標題(與subplot結合使用) plt.title('origin image')
axis 是否顯示坐標尺 plt.axis('off')
subplots 創建帶有多個子圖的窗口 fig,axes=plt.subplots(2,2,figsize=(8,8))
ravel 為每個子圖設置變量 ax0,ax1,ax2,ax3=axes.ravel()
set_title 設置子圖標題(與axes結合使用) ax0.set_title('first window')
tight_layout 自動調整子圖顯示布局 plt.tight_layout()

參考:https://blog.csdn.net/u010472607/article/details/78855816


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM