在Python中手动将RGB图像转换为灰度(不使用外部库)
我将每个像素的红色、绿色和蓝色值相加,并将总和除以3:在Python中手动将RGB图像转换为灰度(不使用外部库),python,image,matplotlib,image-processing,Python,Image,Matplotlib,Image Processing,我将每个像素的红色、绿色和蓝色值相加,并将总和除以3: gray_image=(图像[:,:,0]+图像[:,:,1]+图像[:,:,2])/3 这就是我得到的: 我的代码是: import matplotlib.image as pltim import matplotlib.pyplot as plt import numpy as np def rgb2gray(image): imageHeight = len(image) imageWidth = len(imag
gray_image=(图像[:,:,0]+图像[:,:,1]+图像[:,:,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()
这是原始图像:
我哪里做错了?将rgb转换为灰度使用 灰色=0.2126*红色+0.7152*绿色+0.0722*蓝色 你能发布输出吗 范围内i的
(图像高度):
对于范围内的j(图像宽度):
灰度图像[i][j]=int(图像[i][j][0]*0.2126+图像[i][j][1]*0.7152+图像[i][j][2]*0.0722)
返回灰度图像
将rgb转换为灰度使用
灰色=0.2126*红色+0.7152*绿色+0.0722*蓝色
你能发布输出吗
范围内i的(图像高度):
对于范围内的j(图像宽度):
灰度图像[i][j]=int(图像[i][j][0]*0.2126+图像[i][j][1]*0.7152+图像[i][j][2]*0.0722)
返回灰度图像
输入可以是实际RGB(A)数据,也可以是2D标量数据,这些数据将被渲染为伪彩色图像。注意:要实际显示灰度图像,请使用参数cmap='gray',vmin=0,vmax=255设置颜色映射
要以灰度显示图像,请执行以下操作:
def showGrayImage(self):
plt.imshow(self.grayImage, cmap='gray', vmin=0, vmax=255)
plt.show()
关于行:
grayImage[i][j] = int((image[i][j][0] + image[i][j][1] + image[i][j][2]) / 3)
如前所述,缺少R、G和B通道的三个加权系数
输入可以是实际RGB(A)数据,也可以是2D标量数据,这些数据将被渲染为伪彩色图像。注意:要实际显示灰度图像,请使用参数cmap='gray',vmin=0,vmax=255设置颜色映射
要以灰度显示图像,请执行以下操作:
def showGrayImage(self):
plt.imshow(self.grayImage, cmap='gray', vmin=0, vmax=255)
plt.show()
关于行:
grayImage[i][j] = int((image[i][j][0] + image[i][j][1] + image[i][j][2]) / 3)
如前所述,缺少R、G和B通道的三个加权系数
我们在哪里找到了0.2126、0.7152和0.0722?我申请了,现在我得到了这个图像:我们在哪里找到了0.2126,0.7152和0.0722?我申请了,现在我得到了这张图片:
plt.imshow(…,cmap='gray')
尝试避免对于循环(它们非常慢而且容易出错),使用np.dot()
plt.imshow(…,cmap='gray')
尝试避免对于循环(它们非常慢且容易出错),使用np.dot()
。。。。