加权平均值法:
D=(R*30+G*59+B*11)/100
,其中RGB分别是红,绿,蓝颜色通道的像素值。
取最大值法:
D=max(R,G,B)
平均值法:
D=(R+G+B)/3
import cv2
import numpy as np
image=cv2.imread("C:/Users/wangyiyuan/Desktop/20200201172603_hocyy.jpg")
h=np.shape(image)[0]
w=np.shape(image)[1]
grayimg=np.zeros((h,w,3),np.uint8)
for i in range(h):
for j in range(w):
grayimg[i,j]=0.3*image[i,j][0]+0.59*image[i,j][1]+0.11*image[i,j][2]
cv2.imshow("srcimage",image)
cv2.imshow("grayimage(1)",grayimg)#####加权平均值法
cv2.waitKey(0)
for i in range(h):
for j in range(w):
grayimg[i,j]=max(image[i,j][0],image[i,j][1],image[i,j][2])
cv2.imshow("grayimage(2)",grayimg)#####最大值法
cv2.waitKey(0)
for i in range(h):
for j in range(w):
grayimg[i,j]=(image[i,j][0]+image[i,j][1]+image[i,j][2])/3
cv2.imshow("grayimage(3)",grayimg)#####平均值法
cv2.waitKey(0)
结果如下图:(原图)
可以发现最大值法的运算速度最慢效率最低,而平均值法出现了一定程度上的失真。
标签:灰度变换,image,imshow,cv2,opencv,range,灰度,np,grayimg From: https://blog.csdn.net/m0_67495624/article/details/137021399