我试图用来matplotlib
读取RGB图像并将其转换为灰度。
在matlab中,我使用以下代码:
img = rgb2gray(imread('image.png'));
在matplotlib教程中,他们没有介绍。他们只是读了图像
import matplotlib.image as mpimg
img = mpimg.imread('image.png')
然后将它们切成薄片,但这与根据我的理解将RGB转换为灰度不是同一回事。
lum_img = img[:,:,0]
我发现很难相信numpy或matplotlib没有将rgb转换为灰色的内置函数。这不是图像处理中的常见操作吗?
我写了一个非常简单的函数,可以imread
在5分钟内使用导入的图像。这是非常低效的,但这就是为什么我希望内置一个专业的实现。
Sebastian改进了我的功能,但我仍然希望找到内置的功能。
matlab(NTSC / PAL)的实现:
import numpy as np
def rgb2gray(rgb):
r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
return gray
用Pillow
怎么做:
from PIL import Image
img = Image.open('image.png').convert('LA')
img.save('greyscale.png')
使用matplotlib和公式
Y' = 0.2989 R + 0.5870 G + 0.1140 B
你可以做:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
def rgb2gray(rgb):
return np.dot(rgb[...,:3], [0.2989, 0.5870, 0.1140])
img = mpimg.imread('image.png')
gray = rgb2gray(img)
plt.imshow(gray, cmap=plt.get_cmap('gray'), vmin=0, vmax=1)
plt.show()
问题内容: 我正在学习使用OpenCV进行实时应用程序的图像处理。我对图像进行了一些阈值处理,并希望将轮廓标记为绿色,但是由于我的图像是黑白图像,所以它们没有显示为绿色。 在程序的早期,我曾经将RGB转换为灰度,但是回过头来,我很困惑,该函数给出了: AttributeError:“模块”对象没有属性“ CV_GRAY2RGB”。 下面的代码似乎不是用绿色绘制轮廓。这是因为它是灰度图像吗?如果是这
我正在学习使用OpenCV进行图像处理的实时应用程序。我对一个图像做了一些阈值化,想要用绿色标记轮廓,但它们没有显示在绿色中,因为我的图像是黑白的。 在程序的早期,我使用将RGB转换为灰度,但回到前面,我感到困惑,函数给出的是: AttributeError:“module”对象没有属性“cv_gray2rgb”。 下面的代码似乎没有用绿色绘制轮廓。这是因为它是灰度图像吗?如果是,我可以将灰度图像
问题内容: 我有一个RGB bufferedImage bImg。 我想将图像转换为灰度图像。 我已经尝试过此grayIm,但无法为该grayIm设置灰度值。 问题答案: 一种方法是转换色彩空间(性能不佳): 另一种方法是像您一样使用BufferedImage(更好的性能): 最后但并非最不重要的一点是,最佳性能是使用GrayFilter: 来源:http://www.codebeach.com/
问题内容: 我正在使用aparapi编写Buddhabrot分形生成器。我将其中的OpenCL部分工作了,得到了一个表示每个像素的单维数组。我将最终图像的尺寸作为最终整数,并编写了代码以获取该数组中任意点的索引。我想将其另存为图像,并且尝试将BufferedImage与TYPE_USHORT_GRAY一起使用。这是我到目前为止的内容: 问题是,我不知道将RGB设置为什么。我需要做什么? 问题答案:
问题内容: 我想将具有形状的灰度图像转换为具有形状的3通道图像。使用可以完成工作,但是必须有一个整洁的方法。这是程序中的一段代码,有人可以提示。请指教。 问题答案: 您可以使用它来更简洁地完成此操作:
如何将RGB彩色图像或简单的图像转换为CMY彩色图像,并提取每个组件青色(C)洋红色(M)和黄色(Y)?我的方法:-