最近在分析彩色图片灰度化的过程中使用到了一个函数skimage.color中的rgb2gray(),但是与自己所实现的灰度化公式在计算结果上出入较大,因此特意写这篇文章记录一下对比过程.
首先,看一下RGB转Gray的计算公式 : Gray = R*0.299 + G*0.587 + B*0.114
用Python代码手动实现:
# 手动实现
import numpy as np
import matplotlib.pyplot as plt
import cv2
# 读取图片
img = cv2.imread("lenna.png")
# cv2.imshow("lenna_png", img)
# cv2.waitKey(0)
img_height, img_weight, channel = img.shape
dest = np.ndarray((img_height,img_weight))
for img_y in range(img_height):
for img_x in range(img_weight):
R = img[img_y, img_x, 2]
G = img[img_y, img_x, 1]
B = img[img_y, img_x, 0]
gray_value = float(R*0.299 + G*0.587 + B*0.114) / 255
# print(gray_value)
dest[img_y, img_x] = gray_value
# 将数据输出到txt文件中方便后面对比数据差异
fp = open("dat