一、图像通道
from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('d:/ex.jpg')
gray=img.convert('L')
plt.figure("beauty")
plt.imshow(gray,cmap='gray')
plt.axis('off')
plt.show()
使用convert()函数来进行转换,它是图像实例对象的一个方法,接受一个mode参数,指定一种彩色模式,mode可以是:
- 1(1-bit pixels,black and white)
- L(8-bit pixels black and white)
- P(8-bit pixels,mapped to any other mode using a color palette)
- RGB (3x8-bit pixels, true colour)
- RGBA (4x8-bit pixels, true colour with transparency mask)
- CMYK (4x8-bit pixels, colour separation)
- YCbCr (3x8-bit pixels, colour video format)
- I (32-bit signed integer pixels)
F (32-bit floating point pixels)
2 通道分离
from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('d:/ex.jpg') #打开图像
gray=img.convert('L') #转换成灰度
r,g,b=img.split() #分离三通道
pic=Image.merge('RGB',(r,g,b)) #合并三通道
plt.figure("beauty")
plt.subplot(2,3,1), plt.title('origin')
plt.imshow(img),plt.axis('off')
plt.subplot(2,3,2), plt.title('gray')
plt.imshow(gray,cmap='gray'),plt.axis('off')
plt.subplot(2,3,3), plt.title('merge')
plt.imshow(pic),plt.axis('off')
plt.subplot(2,3,4), plt.title('r')
plt.imshow(r,cmap='gray'),plt.axis('off')
plt.subplot(2,3,5), plt.title('g')
plt.imshow(g,cmap='gray'),plt.axis('off')
plt.subplot(2,3,6), plt.title('b')
plt.imshow(b,cmap='gray'),plt.axis('off')
plt.show()
二、裁剪图片
从原图片中裁剪感兴趣区域由4-tuple决定,该tuple中信息为(left,upper,right,lower)。pillow左边系统的原点(0,0)为图片左上角,坐标中数字单位为像素点。
from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('d:/ex.jpg') #打开图像
plt.figure("beauty")
plt.subplot(1,2,1), plt.title('origin')
plt.imshow(img),plt.axis('off')
box=(80,100,260,300)
roi=img.crop(box)
plt.subplot(1,2,2), plt.title('roi')
plt.imshow(roi),plt.axis('off')
plt.show()
三、几何变换
Image由resize(),rotate()和transpose()方法进行变换.
1、图像缩放和旋转
dst = img.resize((128, 128))
dst = img.rotate(45) # 顺时针角度表示
2、转换图像
dst = img.transpose(Image.FLIP_LEFT_RIGHT) #左右互换
dst = img.transpose(Image.FLIP_TOP_BOTTOM) #上下互换
dst = img.transpose(Image.ROTATE_90) #顺时针旋转
dst = img.transpose(Image.ROTATE_180)
dst = img.transpose(Image.ROTATE_270)