python - 带有图像的 numpy vstack
问题描述
我正在编写一个函数来从图像中读取像素数据并将它们存储在一个 numpy 数组中以进一步进行训练/测试拆分。
当我运行此代码时,它会抛出一个异常,指出除了连接轴之外的所有输入数组维度必须完全匹配。
我不确定为什么会发生此问题以及如何解决它。
from PIL import Image
import numpy as np
import os
X = np.array([])
y = []
categories = {
'A': 1,
'B': 2
}
root = data_dir + '/cropped_resized(128,128)/'
for path, subdirs, files in os.walk(root):
for name in files:
img_path = os.path.join(path,name)
category = categories[os.path.basename(path)]
im = Image.open(img_path)
img_pixels = list(im.getdata())
width, height = im.size
X = np.vstack((X, img_pixels))
#X = np.concatenate((X, img_pixels), axis=0)
y.append(category)
X_train, X_test, y_train, y_test = train_test_split(X, y)
这是失败的图片示例
解决方案
确定您是否希望图像为 RGB 或灰度,并确保它们处于加载状态。
具体来说,更改此行:
im = Image.open(img_path)
到
im = Image.open(img_path).convert('RGB')
或者
im = Image.open(img_path).convert('L')
推荐阅读
- python - 在另一个 python 文件中运行一个 python 文件(没有类和函数)
- ruby-on-rails - Rails config.force_ssl = true; Rails/Rack 是否在解密 SSL?
- azure - 如何阻止来自 AbuseIPDB 中列入黑名单的 IP 地址对应用服务的请求
- java - 使用 @Capture Mockito 进行测试时出现问题
- node.js - 如何减少这些之前/之后操作中的代码重复?
- angular - 如何在 Angular 8 中捕获动态渲染组件的输出?
- android - 为什么即使在正确设置返回值非 null 之后也要改造返回 Null 'LiveData'?
- python - python套接字连接不返回任何信息
- vue.js - 我在哪里可以检查 Vue.js 生成的渲染函数?
- html - 如何将多页网站表中的所有数据提取到 Power BI 中?