gpt4 book ai didi

python - 使用 OpenCV 将图像列表转换为灰度

转载 作者:太空宇宙 更新时间:2023-11-03 21:30:06 25 4
gpt4 key购买 nike

我有一个包含 32x32 RGB 图像的腌制训练数据集。作为预处理步骤,我想将它们转换为灰度。我在训练数据集中读到的是 -

import pickle
import cv2

training_file = "../data/train.p"

with open(training_file, mode='rb') as f:
train = pickle.load(f)

X_train, y_train = train['features'], train['labels']

然后,我尝试使用 for 循环使用以下代码将每个图像转换为灰度 -

for i in range(0,len(X_train)-1): 
X_train[i] = cv2.cvtColor(X_train[i], cv2.COLOR_BGR2GRAY)

但这会引发以下错误 -

---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-4-a920a94faefc> in <module>()
1 for i in range(0,len(X_train)-1):
----> 2 X_train[i] = cv2.cvtColor(X_train[i], cv2.COLOR_BGR2GRAY)

ValueError: could not broadcast input array from shape (32,32) into shape (32,32,3)

但是,如果我仅使用一张图片重复此过程,则不会出现任何错误。我做了以下 - convert single image to grayscale

有人可以解释错误的原因以及如何将整个列表转换为灰度吗?

最佳答案

您的问题来自于您试图将形状为 (32, 32) 的灰度图像存储在一个数组中,该数组存储形状为 (32, 32, 3) 的 RGB 图像)

X_train_grayscale = np.zeros(X_train.shape[:-1])
for i in range(X_train.shape[0]):
X_train_grayscale[i] = cv2.cvtColor(X_train[i], cv2.COLOR_BGR2GRAY)

这将创建一个名为 X_train_grayscale 的新数组,它将包含转换后的灰度图像。

(当然,您需要在 Python 脚本顶部使用通常的 import numpy as np 才能使其正常工作。)

关于python - 使用 OpenCV 将图像列表转换为灰度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56390917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com