python 基于numpy数组的简单图像处理
如图,以该猫咪图片为例(忽略水印)。将该文件命名为cat.jpg,并对其展开以下操作。
使用PIL库进行灰度处理
from PIL import Image
import numpy as np
# 读取图像,并转化为数组
im = np.array(Image.open("cat.jpg"))
# 灰度处理公式
gray_narry = np.array([0.299, 0.587, 0.114])
x = np.dot(im, gray_narry)
# 数组转图片
gray_cat = Image.fromarray(x.astype('uint8'))
# 保存图片
gray_cat.save('gray_cat.jpg')
# 展示查看
gray_cat.show()
处理成功!
将其旋转180度
所谓旋转操作,即 将三维数组中的数据,以每一行(三个)为单位 倒序排列。
from PIL import Image
import numpy as np
# 读取图像,并转化为数组
im = np.array(Image.open("cat.jpg"))
# 旋转
x = im[::-1]
# 数组转图片
cat2 = Image.fromarray(x.astype('uint8'))
# 保存图片
cat2.save('cat2.jpg')
# 展示查看
cat2.show()
程序执行结果:
使用matplotlib库完成灰度处理
import numpy as np
import matplotlib.pyplot as plt
n1 = plt.imread("cat.jpg") # 读取了图片,转化为数组,三维的
plt.imshow(n1)
n2 = np.array([0.299, 0.587, 0.114])
x = np.dot(n1, n2)
plt.imshow(x, cmap="gray")
plt.show()