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)

以后再有常用到的方法,会继续添加,欢迎补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值