6408
在上面的代码中,我首先使用opencv加载图像,然后在第二个块中调整大小并更改其颜色空间。
我的批量大小为101*101*3
,图像尺寸为train_img.shape
当我做(6408,)
时,我得到train_img[i].shape
;当我101*101*3
时,我得到6408*101*101*3
,因此,我无法训练我的神经网络模型,因此,我想要的维度是{{ 1}}
我尝试使用此train_img.resize(6408,101,101,3)
重塑,我得到了ValueError: cannot resize an array that references or is referenced
by another array in this way. Use the resize function
并且在使模型适合我时出现此错误Error when checking input: expected conv2d_3_input to have 4 dimensions, but got array with shape (6408, 1)
我想知道是否可以使用当前用于加载图像的方法更改输入的尺寸。
答案 0 :(得分:1)
您不应在此处使用dtype=object
。 OpenCV仍会创建ndarray
图像。
这是您的代码的更正版本:
mypath='/Users/sachal/Desktop/data_raw/normal_1/images'
onlyfiles = [ f for f in os.listdir(mypath) if os.path.isfile(join(mypath,f)) ]
images = []
for file in onlyfiles:
img = cv2.imread(os.path.join(mypath,file))
resized_img = cv2.resize(img, (101, 101))
yuv_img = cv2.cvtColor(resized_img, cv2.COLOR_BGR2YUV)
images.append(yuv_img.reshape(1, 101, 101, 3))
train_img = np.concatenate(images, axis=0)
print(train_img.shape)
在循环中,加载每个图像,调整其大小,将其转换为YUV,然后将其放入列表中。在循环的最后,您的列表包含所有训练图像。您可以将其传递给np.concatenate
来创建ndarray
。