日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python matplotlib 和PIL

發(fā)布時(shí)間:2025/3/15 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python matplotlib 和PIL 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

目錄

文章目錄

  • 前言
  • 目錄
  • 正文
  • 一、matplotlib
  • 二、PIL

正文

##plt 同時(shí)顯示多幅圖像import matplotlib.pyplot as pltplt.figure()plt.subplot(1,2,1)plt.imshow(images[i])plt.subplot(1,2,2)plt.imshow(maskes[i])plt.show()

以下轉(zhuǎn)自:https://www.cnblogs.com/yinxiangnan-charles/p/5928689.html

在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 這兩個(gè)庫操作圖片。本人偏愛 matpoltlib,因?yàn)樗恼Z法更像 matlab。

一、matplotlib

  • 顯示圖片
  • import matplotlib.pyplot as plt # plt 用于顯示圖片import matplotlib.image as mpimg # mpimg 用于讀取圖片import numpy as nplena = mpimg.imread('lena.png') # 讀取和代碼處于同一目錄下的 lena.png# 此時(shí) lena 就已經(jīng)是一個(gè) np.array 了,可以對(duì)它進(jìn)行任意處理lena.shape #(512, 512, 3)plt.imshow(lena) # 顯示圖片plt.axis('off') # 不顯示坐標(biāo)軸plt.show()
  • 顯示某個(gè)通道
  • # 顯示圖片的第一個(gè)通道lena_1 = lena[:,:,0]plt.imshow('lena_1')plt.show()# 此時(shí)會(huì)發(fā)現(xiàn)顯示的是熱量圖,不是我們預(yù)想的灰度圖,可以添加 cmap 參數(shù),有如下幾種添加方法:plt.imshow('lena_1', cmap='Greys_r')plt.show()img = plt.imshow('lena_1')img.set_cmap('gray') # 'hot' 是熱量圖plt.show()
  • 將 RGB 轉(zhuǎn)為灰度圖
  • matplotlib 中沒有合適的函數(shù)可以將 RGB 圖轉(zhuǎn)換為灰度圖,可以根據(jù)公式自定義一個(gè):

    def rgb2gray(rgb):return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])gray = rgb2gray(lena) # 也可以用 plt.imshow(gray, cmap = plt.get_cmap('gray'))plt.imshow(gray, cmap='Greys_r')plt.axis('off')plt.show()
  • 對(duì)圖像進(jìn)行放縮
  • 這里要用到 scipy

    from scipy import misclena_new_sz = misc.imresize(lena, 0.5) # 第二個(gè)參數(shù)如果是整數(shù),則為百分比,如果是tuple,則為輸出圖像的尺寸plt.imshow(lena_new_sz)plt.axis('off')plt.show()
  • 保存圖像
  • 5.1 保存 matplotlib 畫出的圖像

    該方法適用于保存任何 matplotlib 畫出的圖像,相當(dāng)于一個(gè) screencapture。

    plt.imshow(lena_new_sz)plt.axis('off')plt.savefig('lena_new_sz.png')

    5.2 將 array 保存為圖像

    from scipy import miscmisc.imsave('lena_new_sz.png', lena_new_sz)

    5.3 直接保存 array

    讀取之后還是可以按照前面顯示數(shù)組的方法對(duì)圖像進(jìn)行顯示,這種方法完全不會(huì)對(duì)圖像質(zhì)量造成損失

    np.save('lena_new_sz', lena_new_sz) # 會(huì)在保存的名字后面自動(dòng)加上.npyimg = np.load('lena_new_sz.npy') # 讀取前面保存的數(shù)組

    二、PIL

    1. 顯示圖片from PIL import Imageim = Image.open('lena.png')im.show()
  • 將 PIL Image 圖片轉(zhuǎn)換為 numpy 數(shù)組
  • im_array = np.array(im)# 也可以用 np.asarray(im) 區(qū)別是 np.array() 是深拷貝,np.asarray() 是淺拷貝
  • 保存 PIL 圖片
  • 直接調(diào)用 Image 類的 save 方法

    from PIL import ImageI = Image.open('lena.png')I.save('new_lena.png')
  • 將 numpy 數(shù)組轉(zhuǎn)換為 PIL 圖片
  • 這里采用 matplotlib.image 讀入圖片數(shù)組,注意這里讀入的數(shù)組是 float32 型的,范圍是 0-1,而 PIL.Image 數(shù)據(jù)是 uinit8 型的,范圍是0-255,所以要進(jìn)行轉(zhuǎn)換:

    import matplotlib.image as mpimgfrom PIL import Imagelena = mpimg.imread('lena.png') # 這里讀入的數(shù)據(jù)是 float32 型的,范圍是0-1im = Image.fromarray(np.uinit8(lena*255))im.show()
  • RGB 轉(zhuǎn)換為灰度圖
  • from PIL import ImageI = Image.open('lena.png')I.show()L = I.convert('L')L.show()

    總結(jié)

    以上是生活随笔為你收集整理的Python matplotlib 和PIL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。