图像变换的基本流程
读入一个图像,将其变成数组,改变图像对应数组的RGB值,修改后保存为新的图片。
猫片
代码:
from PIL import Image
import numpy as np
a = np.array(Image.open("D:/日常撸代码/Python数据分析与展示/210316/猫片.jpg"))
b = [255,255,255]-a
im = Image.fromarray(b.astype('uint8'))
im.save("D:/日常撸代码/Python数据分析与展示/210316/猫片1.jpg")
代码解释:
使用np.array和Image.open将原来的猫片变为数组,使用[255,255,255]-a可以计算原图像的RGB三个通道补植,fromarray函数能使用数组b的参数生成一张新的图片,其中astype函数可以改变数组中每一个元素的数据类型,这里我们改为uint8类型。最后使用save函数来保存我们的图片,我们将其取名为猫片2
猫片1
代码
a = np.array(Image.open("D:/日常撸代码/Python数据分析与展示/210316/猫片.jpg").convert('L'))
b = 255 -a
im=Image.fromarray(b.astype('uint8'))
im.save("D:/日常撸代码/Python数据分析与展示/210316/猫片2.jpg")
代码解释
convert(L)函数将彩色图片的RGB值转换为灰度值,255-a则是取灰度值的反补,然后保存图片。
猫片2
代码
a = np.array(Image.open("D:/日常撸代码/Python数据分析与展示/210316/猫片.jpg").convert('L'))
c=(100/255)*a+150#区间变换
im = Image.fromarray(c.astype('uint8'))
im.save("D:/日常撸代码/Python数据分析与展示/210316/猫片3.jpg")
代码解释
第二行对数组进行一个区间变换,得到猫片3。
猫片3
代码
d=255*(a/255)**2#像素平方
im=Image.fromarray(d.astype('uint8'))
im.save("D:/日常撸代码/Python数据分析与展示/210316/猫片4.jpg")
代码解释
对像素进行平方运算,得到数组d,生成猫片4
猫片4