python读取静态图片并显示的方法

参考网上的,自己在 Jupyter 上跑了一下。

1、matplotlib 方式读图,并对其进行操作

#导入需要的包
import matplotlib.pyplot as plt
import numpy as np
#读取lena图,并显示
lena = plt.imread('E:\pic\lenna.bmp')
plt.imshow(lena)
plt.axis('off')
plt.show()
python读取静态图片并显示的方法_第1张图片
lenna图
#显示lena图的相关信息,shape及size
print(lena.shape)
print(lena.size)

(512, 512, 3)
786432

#显示lena图的三个通道
lena_0 = lena[:,:,0]
plt.subplot(2,2,1)
plt.imshow(lena_0)
plt.axis('off')
lena_1 = lena[:,:,1]
plt.subplot(2,2,2)
plt.imshow(lena_1)
plt.axis('off')
lena_2 = lena[:,:,2]
plt.subplot(2,2,3)
plt.imshow(lena_2)
plt.axis('off')
plt.show()
python读取静态图片并显示的方法_第2张图片
三通道图
#显示0通道的灰度图
plt.imshow(lena_0,cmap='Greys_r')
plt.show()
python读取静态图片并显示的方法_第3张图片
单通道灰度图
#将RGB图转为灰度图
#自定义函数
def rgb2gray(rgb):
return np.dot(rgb[...,:3],[0.229,0.587,0.114])
gray_lena = rgb2gray(lena)
plt.imshow(gray_lena,cmap='Greys_r')
plt.show()
plt.axis('off')
python读取静态图片并显示的方法_第4张图片
灰度图
#对图像进行缩放,使用scipy
from scipy import misc
lena_newsize = misc.imresize(lena,0.5)
plt.imshow(lena_newsize)
plt.show()
python读取静态图片并显示的方法_第5张图片
缩小一半的图
#保存图像
#1.保存Matplotlib画出的图像
plt.imshow(lena_newsize)
plt.axis('off')
plt.savefig('lena_newsize.png')
#将array保存为图像
misc.imsave('lena_newsize_1.png',lena_newsize)
#直接保存array,保存为npy
np.save('gray_lena',gray_lena)
img = np.load('gray_lena.npy')
保存结果

"""方式二 OpenCV"""

from PIL import Image
#读取图片
I = Image.open('E:\pic\lenna.bmp')
I.save('lenna.png')
#转为array数组
im_array = np.array(I)
#转为灰度格式
L = I.convert('L')
L.show()

你可能感兴趣的:(python读取静态图片并显示的方法)