Python图像进行的变换(图像通道,裁剪)

1、将彩色图像转灰度图

from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
img=Image.open('1.jpg')
gray=img.convert('L')
gray=np.array(gray, dtype='float32')

plt.imshow(gray,cmap='gray')
plt.axis('off')
plt.show()

原图像:
Python图像进行的变换(图像通道,裁剪)
处理后的图像:
Python图像进行的变换(图像通道,裁剪)
首先将图像转换为灰度,其次找出图像的通道RGB三通道,合并三通道,最终分别读取三通道

from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
img=Image.open('1.jpg')  #打开图像
gray=img.convert('L')   #转换成灰度
gray=np.array(gray, dtype='float32')
r,g,b=img.split()   #分离三通道

pic=Image.merge('RGB',(r,g,b)) #合并三通道

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')

r=np.array(r, dtype='float32')
plt.subplot(2,3,4), plt.title('r')
plt.imshow(r,cmap='gray'),plt.axis('off')
g=np.array(g, dtype='float32')
plt.subplot(2,3,5), plt.title('g')
plt.imshow(g,cmap='gray'),plt.axis('off')
b=np.array(b, dtype='float32')
plt.subplot(2,3,6), plt.title('b')
plt.imshow(b,cmap='gray'),plt.axis('off')
plt.show()

无cmap='gray’时
Python图像进行的变换(图像通道,裁剪)
有cmap='gray’时为
Python图像进行的变换(图像通道,裁剪)

2、裁剪图片

从原图片中裁剪感兴趣区域(roi),裁剪区域由4-tuple决定,该tuple中信息为(left, upper, right, lower)。 Pillow左边系统的原点(0,0)为图片的左上角。坐标中的数字单位为像素点。

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('1.jpg')  #打开图像

plt.subplot(1,2,1), plt.title('origin')
plt.imshow(img),plt.axis('off')

box=(180,50,300,150)
x=img.crop(box)
plt.subplot(1,2,2), plt.title('x')
plt.imshow(roi)
plt.show()

Python图像进行的变换(图像通道,裁剪)

3、几何变换

Image类有resize()、rotate()和transpose()方法进行几何变换。
1、图像的缩放和旋转

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('1.jpg')  #打开图像

a = img.resize((128, 128))
b = img.rotate(45) # 顺时针角度表示
plt.subplot(1,2,1), plt.title('resize')
plt.imshow(a)
plt.subplot(1,2,2), plt.title('rotate')
plt.imshow(b),plt.axis('off')

Python图像进行的变换(图像通道,裁剪)
2、转换图像

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('1.jpg')  #打开图像

c = img.transpose(Image.FLIP_LEFT_RIGHT) #左右互换
d = img.transpose(Image.FLIP_TOP_BOTTOM) #上下互换
e = img.transpose(Image.ROTATE_90)  #顺时针旋转
f = img.transpose(Image.ROTATE_180)
g = img.transpose(Image.ROTATE_270)
plt.subplot(2,3,1)
plt.imshow(c)
plt.subplot(2,3,2)
plt.imshow(d)
plt.subplot(2,3,3)
plt.imshow(e)
plt.subplot(2,3,4)
plt.imshow(f)
plt.subplot(2,3,5)
plt.imshow(g)

Python图像进行的变换(图像通道,裁剪)

相关文章: