运行cv2.resize时报错(-215:Assertion failed)!ssize.empty()如何解决?
该报错的核心是cv2.resize接收到的输入图像为空,触发了OpenCV的内置断言校验,错误源头为前一步的cv2.imread读取图像失败返回了空值。
报错原因
- 路径拼接错误:手动拼接的
raw_folder + folder +"/" + file路径不存在,可能是斜杠重复/缺失、路径含未兼容的中文字符/特殊符号、文件夹/文件名拼写错误、相对路径与当前工作目录不匹配。 - 文件不合法:目标路径的文件不是有效图像,可能是文件损坏、后缀被篡改、为非图像格式的临时文件/隐藏文件/系统文件。
- OpenCV读取限制:
cv2.imread默认不支持部分冷门图像格式,也无法读取带中文/特殊字符的路径,会直接返回空值。
解决方法
首先建议在代码中增加读取校验逻辑,避免无效输入传入resize,参考代码如下:
import os import cv2 import numpy as np # 优先用os.path.join拼接路径,自动适配不同系统的斜杠规则 img_path = os.path.join(raw_folder, folder, file) # 过滤非图像后缀文件 if not file.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.webp')): print(f"跳过非图像文件:{img_path}") continue # 兼容中文路径的读取方式 img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), cv2.IMREAD_COLOR) if img is None: print(f"图像读取失败,路径:{img_path}") else: resized_img = cv2.resize(img, dsize=(128,128)) pixels.append(resized_img)
其他针对性解决措施:
- 路径校验:打印拼接后的完整路径,手动确认文件是否存在;优先使用绝对路径替代相对路径,避免工作目录不匹配的问题。
- 无效文件过滤:遍历文件时增加后缀校验,跳过非图像格式的文件,也可以提前扫描文件夹剔除损坏的图像文件。
- 兼容性处理:路径含中文/特殊符号时,使用
cv2.imdecode的方式读取图像,不要直接用cv2.imread。
内容的提问来源于stack exchange,提问作者Khanh
相关产品推荐
相关产品推荐

