任何颜色都有红、绿、蓝三原色组成,某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度:
1.浮点算法:Gray=R*0.3+G*0.59+B*0.11
2.整数方法:Gray=(R*30+G*59+B*11)/100
3.移位方法:Gray =(R*28+G*151+B*77)>>8;
4.平均值法:Gray=(R+G+B)/3;
5.仅取绿色:Gray=G;
通过上述任一种方法求得Gray后,将原来的RGB(R,G,B)中的R,G,B统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(R,G,B)就是灰度图了。
代码:
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
src=cv.imread('D:/pycharm/pycharmproject/test.jpg')
gray=np.array(src)
gray=gray[:,:,0]
new_color=np.array([gray,gray,gray])
new_color=np.transpose(new_color,(1,2,0))#矩阵维度交换
cv.imshow('new_color',new_color)
cv.waitKey(0)
cv.destroyAllWindows()