将3 dim图像数组转换为2 dim

时间:2018-05-29 19:16:48

标签: python image-processing scipy neural-network deep-learning

使用此代码:

from scipy import misc
import matplotlib.pyplot as plt

images = data.test.images[0:9]
plt.imshow(images[0].reshape(28 , 28))

print(images[0].shape)

我绘制图像:

enter image description here

使用misc中的scipy

face = misc.face()
misc.imsave('face.png', face) # First we need to create the PNG file
face = misc.imread('face.png')

print(face.shape)
plt.imshow(face)

enter image description here

我绘制图像:

如何将face转换为可以使用plt.imshow绘制的二维图像?

使用:

plt.imshow(face.reshape(768 , 1024))

产生错误:

ValueError                                Traceback (most recent call last)
<ipython-input-104-99fef1cec0d2> in <module>()
      6 plt.imshow(face)
      7 
----> 8 plt.imshow(face.reshape(768 , 1024))

ValueError: cannot reshape array of size 2359296 into shape (768,1024)

我没有尝试将图像转换为灰度,而是将其转换为2维而非3维。

更新:

检查单个像素值:print(face[0][0])为:[121 112 131]。我应该将[121 112 131]的平均值作为重塑的一部分吗?

2 个答案:

答案 0 :(得分:0)

我真的不明白你在这里想做什么。如果您希望能够使用开箱即用的imshow来绘制3D数据。如果您想转换为灰度,请查看this。或者,如果要切割3D数据集以获得2D矩阵,请查看this并:

from scipy.misc import face
f = face()
print(f.shape)
print(f[..., 0].shape) # slicing in last dimension
import matplotlib.pyplot as plt
plt.imshow(f[..., 0])

答案 1 :(得分:0)

此代码按预期工作:

   def rgb2gray(rgb):
        return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])


    gray = rgb2gray(face)  
    print(gray.shape)

    plt.imshow(gray)

但颜色是偏斜的。 rgb2gray来源:How can I convert an RGB image into grayscale in Python?

在帮助我实现这一目标的过程中也赞不绝口。