我正在使用 TensorFlow 和 Python 制作图像分类器,但我在使用 CV2 读取图像时遇到错误。我是 CV2 的新手,我还没有找到任何能充分解决我的问题的东西。谁能解释如何解决这个问题?
def train_data_with_label():
train_images = []
for i in tqdm(os.listdir(train_data)):
path = os.path.join(train_data, i)
img = cv2.imread(path, 3)
img = cv2.resize(img, (64,64))
train_images.append([np.array(img), one_hot_label(i)])
shuffle(train_images)
return train_images
def test_data_with_label():
test_images = []
for i in tqdm(os.listdir(test_data)):
path = os.path.join(test_data, i)
img = cv2.imread(path, 3)
img = cv2.resize(img, (64,64))
test_images.append([np.array(img), one_hot_label(i)])
shuffle(test_images)
return test_images
这是我得到的错误:
Using TensorFlow backend.
0%| | 0/2 [00:00<?, ?it/s]
Traceback (most recent call last):
File "retrain.py", line 47, in <module>
training_images = train_data_with_label()
File "retrain.py", line 32, in train_data_with_label
img = cv2.resize(img, (64,64))
cv2.error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:3720: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'
原文由 Will Downs 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的
imread()
调用失败。它返回None
。当您尝试
imread()
一个不存在的文件,或者它不是正确的图片文件时,imread
通过返回None
feina0- 发出信号,Python而不是适当的 numpy 数组。现在,当您将此
None
传递给resize()
时,resize()
注意到并抛出此错误。它会尝试检查参数是否是一个正确的数组,并且它不是一个空数组。在这种情况下,您的参数甚至不是数组,但错误是相同的。如何解决这个问题: 检查
imread()
的结果是否为None
。如果是None
,读取失败。只需继续循环到下一个图片文件名。顺便说一句:
3
在—的第二个参数中意味着imread
IMREAD_COLOR | IMREAD_ANYDEPTH