Numpy RGB到灰色过滤器不';我不能保持原形
我有209张cat/noncat图像,我希望能够扩充我的数据集。为了做到这一点,我使用以下代码将RGB值的每个NumPy数组转换为灰色过滤器。问题是我需要它们的维数相同,我的神经网络才能工作,但它们恰好有不同的维数。代码:Numpy RGB到灰色过滤器不';我不能保持原形,numpy,image-processing,graphics,computer-vision,Numpy,Image Processing,Graphics,Computer Vision,我有209张cat/noncat图像,我希望能够扩充我的数据集。为了做到这一点,我使用以下代码将RGB值的每个NumPy数组转换为灰色过滤器。问题是我需要它们的维数相同,我的神经网络才能工作,但它们恰好有不同的维数。代码: def rgb2gray(rgb): return np.dot(rgb[...,:3], [0.2989, 0.5870, 0.1140]) Normal Image Dimension: (64, 64, 3) After Applying the Filter:(
def rgb2gray(rgb):
return np.dot(rgb[...,:3], [0.2989, 0.5870, 0.1140])
Normal Image Dimension: (64, 64, 3)
After Applying the Filter:(64,64)
我知道缺少的3可能是RGB值或其他东西,但我找不到一种方法来创建一个不会影响实际图像的“虚拟”三维。是否有人可以提供rgb2gray函数的替代方案来保持尺寸?应用灰度过滤器的全部目的是将通道数从3(即R、G和B)减少到1(即灰色) 如果你真的真的想得到一个3通道的图像,看起来一样,但占用3倍的内存,只需使所有3个通道相等:
grey = np.dstack((grey, grey, grey))
我想你可以使用numpy的
restrape()
,如果你的目标是拥有(64,64,1)我的目标是让它拥有与原始图像相同的形状。但是你不能,因为灰度图像是一个单通道图像,rgb是三个深度,我遗漏了什么吗?我明白了。问题是当我将图像展平成向量时,这可能会有问题,因为我的神经网络的大小是64x64x3。你是在使用转移学习还是从头开始的架构?解释代码的作用以及它如何解决OP的问题会使这成为一个更好的答案。
def rgb2gray(rgb):
return np.dot(rgb[...,:3], [[0.2989, 0.5870, 0.1140],[0.2989, 0.5870, 0.1140],[0.2989, 0.5870, 0.1140]])