最近学习了一下数据分析。今天打算用matplotlibnumpy来实现图像灰度处理。

我们知道,图像是由若干像素来组成,每一个像素都有明确的位置和被分配的颜色值(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()

运行对比:

原图片(这是我本人,电脑拍的,像素不好,好憨呀!)

 灰度处理后:

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐