如何将彩色图片转为黑白图片
第一种方法-灰度公式法:
看了网上很多人说有个灰度公式,可以直接遍历每个像素,并把每个像素中的rgb换成如下值即可:
P
=
0.299
×
R
e
d
+
0.587
×
G
r
e
e
n
+
0.114
×
B
l
u
e
P=0.299\times Red +0.587\times Green+0.114\times Blue
P=0.299×Red+0.587×Green+0.114×Blue
注意,这里需要给每个像素的r、g、b都换成这个P值
这里用js试一下
function makeGray() {
#遍历图片中每一个像素
for (var pixel of img.values()) {
#获得每个像素所含rgb的平均值
avg = (pixel.getRed() + pixel.getGreen() + pixel.getBlue())/3;
#使用公式得到P值
P =(0.299*pixel.getRed() +0.587* pixel.getGreen() + 0.114*pixel.getBlue())
#把rgb每个颜色的亮度都换成P值
pixel.setGreen(P)
pixel.setRed(P)
pixel.setBlue(P)
}
👇结果如下
第二种方法-平均值法:
将像素中每一点的rgb值设为rgb三个值的平均值。
a
v
g
=
(
R
e
d
+
G
r
e
e
n
+
B
l
u
e
)
÷
3
avg=(Red+Green+Blue)\div 3
avg=(Red+Green+Blue)÷3
这里使用js测试
function makeGray() {
#遍历图片中每一个像素
for (var pixel of img.values()) {
#获得每个像素所含rgb的平均值
avg = (pixel.getRed() + pixel.getGreen() + pixel.getBlue())/3;
#把rgb每个颜色的亮度都换成平均值
pixel.setGreen(avg )
pixel.setRed(avg )
pixel.setBlue(avg )
}
👇结果如下
Reference:
1.Ashley Taylor ‘Introduction to Computing Principles’.