我将每个像素的红色、绿色和蓝色值相加,并将总和除以3:
gray_image = (image[:,:,0] + image[:,:,1] + image[:,:,2]) / 3
这就是我得到的:
我的代码是:
import matplotlib.image as pltim
import matplotlib.pyplot as plt
import numpy as np
def rgb2gray(image):
imageHeight = len(image)
imageWidth = len(image[0])
grayImage = np.empty([imageHeight, imageWidth], dtype=np.uint8)
for i in range(imageHeight):
for j in range(imageWidth):
grayImage[i][j] = int((image[i][j][0] + image[i][j][1] + image[i][j][2]) / 3)
return grayImage
class RetargetedImage:
imageDirectory = ""
image = None
grayImage = None
def __init__(self, imageDirectory):
self.imageDirectory = imageDirectory
self.image = pltim.imread(self.imageDirectory)
self.grayImage = rgb2gray(self.image)
def showOriginalImage(self):
plt.imshow(self.image)
plt.show()
def showGrayImage(self):
plt.imshow(self.grayImage)
plt.show()
example1 = RetargetedImage("treeMedium.jpg")
example1.showGrayImage()
这是原始图像:
我哪里做错了
Here is the documentation of the imshow method
要以灰度显示图像,请执行以下操作:
关于行:
您缺少R、G和B通道的三个权重系数,如here on Wikipedia所述
要将rgb转换为灰度,请使用 灰色=0.2126*红色+0.7152*绿色+0.0722*蓝色
你能发布输出吗
相关问题 更多 >
编程相关推荐