这一篇博客介绍几个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