Jupyter Notebook中name 'path' is not defined错误求助,已试pathlib无效
解决
name 'path' is not defined错误 错误根源
你代码里直接使用了path变量,但从未定义过它——这和你安装pathlib完全无关,pathlib是处理路径的库,但你这段代码里既没用到它,也没给path赋值。你的images变量已经通过glob.glob拿到了所有图片的路径列表,核心问题是没从这个列表里取出具体路径赋值给path。
修正后的代码
import glob import cv2 as cv images = glob.glob('.//views//**.png') print('There are {} images available'.format(len(images))) # 先判断列表非空,避免索引越界错误 if images: # 取第一张图片的路径赋值给path path = images[0] # 只读取一次图片,避免重复磁盘IO操作 img_hsv = cv.imread(path, cv.COLOR_BGR2HSV) print('First image has {} number of pixels'.format(len(img_hsv[:,:,0].flatten()))) print('First image shape is {} '.format(img_hsv.shape)) else: print('No images found in the target directory!')
关键说明
- 必须显式赋值
path:通过path = images[0]从已获取的路径列表中取出第一张图的路径,cv.imread才能拿到有效路径参数。 - 增加非空判断:如果
images为空(没找到匹配的图片),直接取images[0]会触发索引错误,加判断能让代码更健壮。 - 复用图片对象:原代码两次调用
cv.imread会重复读取磁盘文件,把读取结果存到变量中复用更高效。 - 可选:用pathlib替代glob的写法
from pathlib import Path images = list(Path('.//views').rglob('*.png')) if images: path = str(images[0]) # cv.imread需要字符串格式路径,将Path对象转为字符串即可 # 后续图片处理逻辑和上面一致
内容的提问来源于stack exchange,提问作者Ahmad Turani
相关产品推荐
相关产品推荐

