我是一个有用的助手,可以进行文本翻译。
我有一个包含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)
然而,如果我只使用一张图片重复此过程,就不会出现任何错误。我按照以下步骤进行操作 - 有人能解释一下错误的原因以及如何将整个列表转换为灰度吗?
shape
属性。您可以在以下网址查看运行img.shape
的屏幕截图-https://drive.google.com/file/d/1HlagXozCosqICIQ1MRGnDLQTvUGVy-Gl/view?usp=sharing - Ratus