最近学习了一下数据分析。今天打算用matplotlib和numpy来实现图像灰度处理。
我们知道,图像是由若干像素来组成,每一个像素都有明确的位置和被分配的颜色值(RGB)。图像就是由很多像素构成的一个矩阵。
图片灰度处理的计算公式:Gray=R*0.299+G*0.587+B*0.114
其中,Gray表示灰度值,RGB表示红绿蓝的颜色值。
图片灰度处理后的数据是二维数组,颜色0~255,0到255为由暗到亮的过程。也就是灰度。
这篇博客用到的一些知识学习了这篇博客:Matplotlib imshow()函数
实现代码如下:
import matplotlib.pyplot as plt
import numpy as np
# 读取我的自拍图片(imread的函数功能也非常简单,名称也可以看出来,image read的缩写。imread负责的就是加载图片)
n1=plt.imread("me.png")
# n1为三维数组,最高维度是图像的height,此高维是图像的width,最低为是RGB颜色
# 显示图片(imshow的函数功能也非常简单,名称也可以看出来,image show的缩写。imshow负责的就是将图片显示在窗口中)
plt.imshow(n1)
# 灰度公式要乘的值封装成一个列表n2
n2=np.array([0.299,0.587,0.114])
# 将n1的颜色值与n2点乘
x=np.dot(n1,n2)
#传入数据显示灰度
plt.imshow(x,cmap="gray")
plt.show()
运行对比:
原图片(这是我本人,电脑拍的,像素不好,好憨呀!)
灰度处理后: