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

Python初学者创建图像NumPy数组遇cv2.resize错误求助

解决OpenCV resize错误:ssize.width > 0 && ssize.height > 0

嘿,我来帮你搞定这个问题!你遇到的这个错误本质是传给cv2.resize的是无效/空图像(也就是img变量是None),没法执行缩放操作。咱们一步步拆解原因并修复:

核心错误原因

  1. 遍历对象完全错了
    你写的for image in data_path是在遍历字符串data_path的每个字符,而不是遍历data1文件夹里的图片文件!正确的遍历对象应该是data_path_folder——也就是你用os.listdir(data_path)拿到的文件夹文件列表。

  2. 未处理无效文件/读取失败场景
    文件夹里可能混有非图片文件,或者路径拼接错误导致图片读取失败,这时候cv2.imread会返回None,直接传给resize就会触发这个报错。

修正后的完整代码

import cv2
import os
import numpy as np

PATH = os.getcwd()
# 用os.path.join拼接路径,避免不同系统的斜杠兼容性问题
data_path = os.path.join(PATH, 'data1')
data_path_folder = os.listdir(data_path)
X_data = []

# 遍历文件夹里的每个文件
for filename in data_path_folder:
    # 拼接完整的图片路径
    img_path = os.path.join(data_path, filename)
    
    # 过滤非图片文件(可根据需要添加更多后缀)
    if not filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
        continue
    
    # 读取图片
    img = cv2.imread(img_path, cv2.IMREAD_COLOR)
    
    # 检查图片是否读取成功,失败则跳过并打印警告
    if img is None:
        print(f"警告:无法读取文件 {img_path},已跳过")
        continue
    
    # 缩放图片
    img_resize = cv2.resize(img, (128, 128))
    X_data.append(img_resize)

# 确保有图片加载成功再进行后续处理
if X_data:
    img_data = np.array(X_data)
    img_data = img_data.astype('float32')
    img_data /= 255
    print(img_data.shape)
else:
    print("没有成功加载任何图片,请检查data1文件夹里的内容")

关键改进点

  • 用os.path.join拼接路径:避免手动加斜杠在Windows/Linux下的兼容性问题
  • 过滤非图片文件:只处理常见格式的图片,跳过无关文件
  • 增加读取失败判断:打印警告并跳过无效文件,避免程序直接崩溃
  • 增加非空判断:防止没有图片加载时执行数组转换报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:59:51