一 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
(X, cmap=None)
X: 要绘制的图像或数组。
cmap: 颜色图谱(colormap), 默认绘制为RGB(A)颜色空间。
其它可选的颜色图谱如下列表:
用的比较多的有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