这一篇博客介绍几个python处理图像的常见库,介绍基础的存取和显示,旨在帮助大家更好的选择合适的库进行图像处理,或者结合pytorch等深度学习框架进行图像的读取与显示

1.OpenCV

OpenCV是一个计算机视觉和软件库,由C++编写而成,常用python接口

CV(computer vision)意为计算机视觉,OpenCV经常用在计算机视觉领域,如目标检测中结合深度学习使用,封装了许多机器学习和深度学习算法,同时它可以调取摄像头

下载opencv:

# 需要先安装numpy和matplotlibpip install opencv_python

读入图片:

注意opencv读取默认是BGR通道,这里转换成RGB通道 ,以适应其他库的习惯

import cv2import matplotlib.pyplot as plt # 用于在jupyter中绘图img_bgr = cv2.imread("images/Tokyo.png") # BGR通道img_rgb = img_bgr[:,:,::-1] # python中::-1代表反转,也就是将BGR通道变成RGB通道img_rgb

可以看到,OpenCV是以数组形式读取图片

在窗口显示:

cv2.imshow("myImage",img_bgr)cv2.waitKey(0) # 等待用户按键触发,设置为0即无限制等待||显示视频时表示帧间延迟(一定要>0)

在jupyter显示:

dpi:每英寸内的像素点数

# 显示BGR和RGB的区别# plt.figure(dpi=90) #dpi越大显示越大plt.imshow(img_bgr)plt.show() # 显示BGR通道# plt.figure(dpi=90)plt.imshow(img_rgb)plt.show() # 显示RGB通道

# 图片保存cv2.imwrite("data/myImage.png",img)

2.PIL

PIL全称Pillow,是基础图像处理库,主要有两个功能:

图像归档:创建略缩图,生成预览图,批量处理

图像处理:调整大小,裁剪图像,像素点处理,添加滤镜,颜色处理

from PIL import Imageimport matplotlib.pyplot as pltimg = Image.open("images/Tokyo.png")print(type(img))# 图片显示# img.show() # 在窗口显示# plt.imshow(img) # 在jupyter显示# 图片保存img.save("data/myImage.png")

可以看到,PIL将图片作为一个类型

3.matplotlib

import matplotlib.pyplot as pltimg = plt.imread("images/Tokyo.png")print(type(plt))plt.imshow(img)plt.savefig("data/myImage1.png")

可以看到,matplotlib也将图片作为一个类型

4.其他

上面的比较常用另外,还有Scipy(主要用于数学和科学计算),Pgmagick(图像处理)等库可供选择,有的深度框架也自己定义了图像存取模块,如keras的keras.preprocessing.image