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

如何使用Python OpenCV从指定文件夹随机读取并打开图片

问题原因

你的代码核心问题是os.listdir()仅返回目标文件夹下的文件名本身,不会携带父级路径前缀。你直接把纯文件名传给cv2.imread()时,程序会默认从当前脚本的工作目录下查找对应文件,而不是从./images/目录下查找,最终读取图片失败返回None,后续调用imshow时就会触发尺寸校验失败的报错。

修复方案

你需要把随机选中的文件名和父级路径拼接成完整路径再传入cv2.imread(),参考代码如下:

import cv2
import os
import random

img_dir = "./images/"
# 过滤非图片文件,避免选中文件夹或者无效文件
file_list = [f for f in os.listdir(img_dir) if f.lower().endswith(('.jpeg', '.jpg', '.png', '.bmp'))]
if not file_list:
    raise FileNotFoundError(f"目录 {img_dir} 下没有符合要求的图片文件")
# 随机选取图片
file = random.choice(file_list)
# 拼接得到完整的图片路径
full_img_path = os.path.join(img_dir, file)
capture = cv2.imread(full_img_path)
额外排查项

如果修改代码后仍然报错,可按以下顺序排查:

  • 确认路径大小写是否匹配:你之前的固定路径写的是.Images/,后续随机读取用的是./images/,注意Windows和macOS/Linux对路径大小写的敏感度不同
  • 确认选中的文件不是损坏的图片文件
  • 可以新增print(full_img_path)代码打印拼接后的完整路径,手动确认路径是否正确、对应文件是否存在

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:45:04