灰度图
灰度图,Gray Scale Image 或是Grey Scale Image,又称灰阶图。把白色与黑色之间按对数关系分为若干等级,称为灰度。灰度分为256阶。
灰度图定义
什么叫灰度图?任何颜色都有红、绿、蓝三原色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度:
1.浮点算法:Gray=R0.3+G0.59+B0.11
2.整数方法:Gray=(R30+G59+B11)/100
3.移位方法:Gray =(R76+G151+B*28)>>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 numpy as np
import cv2
def gray(image):
h,w = image.shape[:2] #获取图片的high和wide
img = np.zeros([h,w],image.dtype) #创建一张和当前图片大小一样的图片
# print(img)
for i in range(h):
for j in range(w):
m = image[i,j] #取出当前high和wide中的BGR坐标
img[i,j] = int(m[0]*0.11 + m[1]*0.59 + m[2]*0.3) #将BGR坐标转化为gray坐标并赋值给新图像
print("image show: %s"%img)
cv2.imshow("image show",img)
src = cv2.imread("./img/02.jpg")
dst = cv2.cvtColor(src,cv2.COLOR_BGR2GRAY) #opencv自带RGB转灰度图api
print("gray: %s"%dst) #查看自带api转灰度图结果的数组
cv2.imshow("gray image",dst)
gray(src)
cv2.waitKey(0)
cv2.destroyAllWindows("image")
运行结果:
opencv自带api转换
两者图片对比