You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Kaggle样本代码遇OpenCV(4.6.0) resize函数断言失败错误求助

问题排查与解决

这个!ssize.empty()错误的核心原因是**cv2.imread()没有成功读取到图片,返回了None**,导致cv2.resize()无法对空对象执行缩放操作。以下是具体的排查和修复步骤:

1. 检查图片路径是否完整正确

你的代码只给image_id加上了.jpg后缀,但没有指定数据集的根目录路径。在Kaggle环境中,数据集通常存放在/kaggle/input/[你的数据集名称]/目录下,必须把这个根路径拼接到文件名前,否则cv2.imread找不到文件。

修正路径拼接逻辑:

import os

# 替换成你的数据集实际根目录
DATA_ROOT = "/kaggle/input/your-dataset-folder-name/"

train_img = []
for img_name in tqdm(train['image_id'].values):
    # 拼接完整路径
    full_img_path = os.path.join(DATA_ROOT, img_name + '.jpg')
    train_img.append(full_img_path)
train['image'] = train_img

2. 在代码中添加读取失败的判断

即使路径正确,也可能存在损坏的图片文件,导致cv2.imread返回None。在执行resize前必须判断图片是否读取成功,避免程序崩溃:

IMG_SIZE = 224
data = []  # 确保data变量已定义,避免全局变量隐患

def read_img(img_path):
    img = cv2.imread(img_path, cv2.IMREAD_COLOR)
    # 检查图片是否读取成功
    if img is None:
        print(f"警告:无法读取图片,路径可能错误或文件损坏: {img_path}")
        return None
    img = cv2.resize(img, (IMG_SIZE, IMG_SIZE))
    img_array = img_to_array(img)
    data.append(img_array)  # 建议添加数组而非原图片,避免内存浪费
    return img_array

3. 验证图片文件状态

如果仍然有读取失败的情况,可以手动检查对应的图片文件:

  • 确认文件是否存在于指定路径下
  • 检查图片是否损坏(比如用图片查看器打开测试)
  • 部分特殊格式的图片可能不被OpenCV支持,可以尝试用PIL库读取替代:
    from PIL import Image
    
    def read_img(img_path):
        try:
            img = Image.open(img_path).convert('RGB')
            img = img.resize((IMG_SIZE, IMG_SIZE))
            img_array = img_to_array(img)
            data.append(img_array)
            return img_array
        except Exception as e:
            print(f"读取图片失败: {img_path}, 错误信息: {str(e)}")
            return None
    

内容的提问来源于stack exchange,提问作者Uttam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:24:45