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

如何用Python循环读取单文件夹内多张图片?代码报错求助

解决NameError报错并实现批量读取图片及独立操作

问题原因分析

你遇到的NameError: name 'imagenames_list' is not defined是因为变量名拼写错误:你定义的是imagenames__list(两个下划线),但后续代码里调用的是imagenames_list(一个下划线),Python会把它们识别成两个完全不同的变量,自然找不到后者。

除此之外,代码还有个逻辑问题:glob.glob('/content/drive/My Drive/Colab Notebooks/Asplab/Cifar/image31.png')指定的是单个图片文件路径,而非文件夹,后续嵌套循环查找/*.jpg根本找不到任何文件,也就无法获取你需要的5张图片路径。

修正后的完整代码

下面是修正了上述问题,并且实现“逐个读取图片并执行独立操作”的代码:

import cv2
import numpy as np
import glob
import pylab as plt

# 修正:指定图片所在的文件夹路径,而非单个文件
image_folder = '/content/drive/My Drive/Colab Notebooks/Asplab/Cifar/'

# 修正变量名拼写错误,获取文件夹内所有jpg格式图片(可根据实际后缀调整)
imagenames_list = glob.glob(image_folder + '*.jpg')
# 如果你的图片有多种格式(比如png、jpg),可以用下面的方式批量匹配
# imagenames_list = glob.glob(image_folder + '*.[jp][pn]g')

# 初始化列表存储读取的图片
read_images = []

# 逐个读取图片并执行独立操作
for image_path in imagenames_list:
    # 以灰度模式读取图片
    img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
    if img is not None:  # 确保图片读取成功,避免损坏图片影响后续流程
        read_images.append(img)
        # 在这里添加对单张图片的独立操作,示例如下:
        print(f"已读取图片:{image_path.split('/')[-1]},尺寸:{img.shape}")
        # 示例:显示图片(Colab环境需要加上plt.show()才能正常显示)
        plt.imshow(img, cmap='gray')
        plt.title(image_path.split('/')[-1])
        plt.axis('off')
        plt.show()
        # 你可以替换成自己需要的操作,比如边缘检测、特征提取等
    else:
        print(f"警告:图片读取失败,请检查路径或文件完整性:{image_path}")

关键修正点说明

  • 变量名统一:把拼写错误的imagenames__list改成imagenames_list,确保变量的定义和调用完全一致。
  • 路径修正:将目标路径改为图片所在的文件夹,让glob能正确遍历出文件夹内的所有图片。
  • 读取校验:添加if img is not None的判断,避免因图片损坏或路径错误导致后续代码崩溃。
  • 独立操作示例:在读取每张图片后,加入了打印图片信息、显示图片的示例,你可以直接替换成自己需要的业务操作。

内容的提问来源于stack exchange,提问作者Faheem Ur Rehman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:47:47