首页 > 解决方案 > 为什么我不能重塑从图像派生的 numpy 数组?

问题描述

我在一个目录中有几个 PNG 文件,我打算将它们读入数组并且我想将其展平。所有图像都是灰度图像,是两个通道图像值,如 (28,28)。

当我运行这段代码

import numpy as np
import cv2,os,glob
import matplotlib.pyplot as plt
from PIL import Image

arrays_of_images=[]
data_paths = [os.path.join(pth, f) for pth, dirs, files in os.walk(path) for f in files]
for image in data_paths:
  img=Image.open(image)
  resized=img.resize((28,28))
  arrayed=np.array(resized)
  raveled=arrayed.ravel()
  arrays_of_images.append(raveled)

它让我看到了一个由 (28,28) 维度的数组组成的列表。当我将列表转换为数组时,图像总数为 736,我得到 (736,28,28) 大小的数组。如您所见,该ravel()功能不起作用。我想将每个图像的数组展平为 (28x28) 大小,并且我想要 (736,28*28) 大小的数组。

这里有什么问题?为什么ravel()功能不起作用?

我也试过numpy.ndarray.flatten()了,它对我也不起作用?

之后,我会将这个数组转换为 pandas 数据帧使用to_csv()函数,并将其用于 K 近邻进行图像相似性检测。

标签: pythonarraysnumpyimage-processingcv2

解决方案


推荐阅读