Python——利用Numpy进行图像变换
前言
首先,不得不说,Python的图像处理功能真的很强!!!
不论是PIL还是numpy,用起来都非常方便,而且易懂。
在这里,给大家分享一下利用numpy来进行图像变换。
正文
原图(Strawberry.jpg)
进行取反
a = np.array(Image.open('Strawberry.jpg'))
b = [255, 255, 255] - a # 对图像各像素颜色取反
im = Image.fromarray(b.astype('uint8')) # 对图像进行数组处理,之后保存
im.save('Strawberry01.jpg')
a中存的是各像素形成的数组,大家可以print(a.shape, a.dtype)看一下,a.shape是指这个数组的维度,a.dtype指的是数组a中存在的数据类型
uint8是8位无符号整型
转化为灰度图
c = np.array(Image.open('Strawberry.jpg').convert('L'))
im1 = Image.fromarray(c.astype('uint8'))
im1.save('Strawberry02.jpg')
convert(‘L’)是指将图像进行灰度处理
对灰度图进行取反
c = np.array(Image.open('Strawberry.jpg').convert('L'))
d = 255 - c # 也就是对灰度图取反
im1 = Image.fromarray(d.astype('uint8'))
im1.save('Strawberry03.jpg')
将图像像素值变换到150…250 区间,使各相邻像素色差减小
e = np.array(Image.open('Strawberry.jpg'))
f = (100 / 255) * e + 150
im2 = Image.fromarray(f.astype('uint8'))
im2.save('Strawberry04.jpg')
(其实为什么是f = (100 / 255) * e + 150 这个公式,我也还没搞懂)
使较暗的像素值变得更小,一般是使图片颜色更深
g = np.array(Image.open('Strawberry.jpg'))
h = 255 * (g / 255) ** 2 # 像素平方
im3 = Image.fromarray(h.astype('uint8'))
im3.save('Strawberry05.jpg')
注:
这里的图片和保存图片的地址需在同一目录下的