Python切分图像小案例(1、3、2、4象限子图互换)

2017-06-14 董付国 Python小屋 Python小屋

首先解释上一篇文章详解Python科学计算扩展库numpy中的矩阵运算(1)最后的习题,该问题答案是10 ** 8 = 100000000,原因在于Python中的运算符**是从右往左计算的,这在Python运算符中算是一个特例。



--------------分割线--------------

读取一幅图像的内容,将其按象限分为4等份,然后13象限内容交换,24象限内容交换,生成一幅新图像。本文主要演示扩展库pillow中Image对象的crop()和paste()两个方法的用法。

from PIL import Image

im = Image.open('test.bmp')
size = im.size


# 获取4个象限中的子图
box1 = (0, size[1]//2, size[0]//2, size[1])
region1 = im.crop(box1)
box2 = (0, 0, size[0]//2, size[1]//2)
region2 = im.crop(box2)
box3 = (size[0]//2, 0, size[0], size[1]//2)
region3 = im.crop(box3)
box4 = (size[0]//2, size[1]//2, size[0], size[1])
region4 = im.crop(box4)


# 交换象限
im.paste(region1, box3)
im.paste(region3, box1)
im.paste(region2, box4)
im.paste(region4, box2)

im.save('result.bmp')
im.close()


原始图像为:


生成的新图像为:


今天实在太忙了,没有练习题。