python图像几何变换_用python简单处理图片(2):图像通道\几何变换\裁剪

一、图像通道

1、彩色图像转灰度图

from PIL importImageimportmatplotlib.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()

140867-20160103134331620-1785696059.png

使用函数convert()来进行转换,它是图像实例对象的一个方法,接受一个 mode 参数,用以指定一种色彩模式,mode 的取值可以是如下几种:

· 1 (1-bit pixels, black and white, stored with one pixel per byte)

· L (8-bit pixels, black and white)

· P (8-bit pixels, mapped to any other mode using a colour 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 importImageimportmatplotlib.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()

140867-20160103140351917-83215038.png

二、裁剪图片

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

from PIL importImageimportmatplotlib.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()

140867-20160103141335370-2117901788.png

用plot绘制显示出图片后,将鼠标移动到图片上,会在右下角出现当前点的坐标,以及像素值。

三、几何变换

Image类有resize()、rotate()和transpose()方法进行几何变换。

1、图像的缩放和旋转

dst = img.resize((128, 128))

dst= img.rotate(45) #顺时针角度表示

2、转换图像

dst =im.transpose(Image.FLIP_LEFT_RIGHT) #左右互换

dst=im.transpose(Image.FLIP_TOP_BOTTOM) #上下互换

dst=im.transpose(Image.ROTATE_90) #顺时针旋转

dst=im.transpose(Image.ROTATE_180)

dst= im.transpose(Image.ROTATE_270)

transpose()和rotate()没有性能差别。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值