- 常用的三个图像相关模块:PIL, cv2, matplotlib
- 一般使用numpy读取文件,因为numpy可以按照数据类型读取;用PIL或matplotlib读取文件或图像,因为cv2读取到的图像是通道顺序是BGR
- 用cv2处理图像,cv2就是opencv,专门用于图像处理。或numpy处理图像对应的矩阵。
- 用matplotlib显示,在jupyter notebook内matplotlib可以插入到cell间显示
基本操作
- 读入,显示,保存
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
img = mpimg.imread('Lena.jpg')
plt.imshow(image)
图像读入后,数据格式是一个 numpy数组。
注意pyplot读入彩色图像时,通道是BGR而不是RGB。
显示灰度图
def bgr2gray(bgr):
return np.dot(rgb[...,:3], [0.114, 0.587, 0.229])
plt.gray()
plt.imshow(image)
对灰度图像来说,必须调用 plt.gray() 才能显示二维数组表示的灰度图,否则会上色。
matplotlib 画图
- 画散点图
如plt.scatter(x, y, s=20, marker='.', c='r')
x,y为相同长度的数组,s散点大小,marker为形状,’.'表示点,c表示颜色。
可以将散点图用于在图像上进行标记 - 只在终端运行程序,如何保存图像? 这样引入pyplot(必须先调用
matplotlib.use('Agg')
),之后调用画图函数就不会报错,然后使用plt.savefig()
就可以保存图像了。
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt