Python图像处理两种常用方法:PIL和OpenCV
一.PIL(pillow)一些常用方法
安装pillow,直接用pip命令就行:
pip install pillow
1.读取图像
from PIL import Image Img = Image.open(img_path) #输出的Img是Image类格式的一个对象
既然是对象,就可以利用"Img.函数名"调用Image中的各种方法。 2.图像旋转,翻转
Img.rotate(90) #图像旋转90度,默认是逆时针 Img.transpose(Image.FLIP_TOP_BOTTOM) #图像上下翻转
3.Img对象转数组格式,可以用numpy转换
Import numpy as np ArraImg = np.array(Img)
4.array图像数组转Img 图像调用Image类中的各种图像处理的方法时,要求图像是Image类对象的格式,如果输入的是array图像数组,可以通过以下方法将图像数组转换成Image类对象的格式:
Img = Image.fromarray(Arrayimg)
5.显示图像 可以用matplotlib工具(推荐使用)
import matplotlib.pyplot as plt plt.imshow(Img,gray) #Image类对象的格式的数据,默认显示彩色图像,加入关键字‘gray’显示灰度图 plt.show()
新建窗口:
plt.figure()#类似于matlab里的figure
二.Opencv一些常用方法
安装opencv,也是直接用pip命令就行:
pip install opencv-python
1.读图像
Import cv2 as cv Img = cv.imread(img_path,cv.IMREAD_GRAYSCALE) #cv.IMREAD_GRAYSCALE表示按照灰度图方式读取图像,默认是彩色图读取方式,也可以选别的参数,如不区分图像位深的cv.IMREAD_ANYDEPTH #注意:windows系统中img_path不能带有中文,否则读取图像为空 ,ubuntu中就可以
opencv生成的Img直接是array格式,与PIL不同。 2.图像水平翻转
import cv2 as cv cv.flip(Img,flipCode) #flipCode>0,水平翻转;flipCode=0,垂直翻转;flipCode<0,水平和垂直都翻转
3.旋转一定的角度 假设,顺时针旋转角度为RotateAngle,图像旋转实现如下:
[rows,cols] = np.shape(Img) center = (cols/2,rows/2) M = cv.getRotationMatrix2D((cols/2,rows/2),360-RotateAngle,1) RotateImg = cv.warpAffine(Img,M,(cols,rows)) #利用getRotationMatrix2D函数配合warpAffine实现图像旋转
4.显示图像 python的opencv显示图像的函数是imshow(),和matlab一样:
cv.namedWindow(窗口,0) #namedWindow是创建窗口,默认是1(固定窗口大小),改成0的意思是自适应的调整窗口大小 cv.imshow(窗口,Img) cv.waitKey() #不加这句话窗口就卡住,有点坑…
不推荐使用上述方式显示图像,有点坑。。。 5.裁剪图像
import cv2 as cv Crop_Img = cv.getRectSubPix(Img, (98, 33), (1, 1)) #(98,33)代表裁剪区域的大小,(1,1)代表裁剪的中心
6.写图像 写图像也和matlab函数一样,都是imwrite()
import cv2 as cv cv.imwrite(save_dir,Img)
以后再有常用到的方法,会继续添加,欢迎补充
