为什么路径函数不返回任何图像

2024-05-12 18:14:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从文件夹中加载一些图像并逐个查看,但使用一种方法,我会收到一条错误消息,而另一种方法虽然没有错误,但不会打开图像,最后一种方法只返回一个空列表

我已经尝试了一些路径变量。我尝试了path1中所示的工作目录和pathGlob中所示的另一个目录。我已经尝试了所有的变化,但我在不同的路径中使用这两种方法来向您展示,以防这在任何方面都有影响

path1 = r'C:\Users\Kays_\PycharmProjects\CompVisionExam\Calibration_images'
path2 = os.listdir('Calibration_images')
pathGlob = glob.glob(r'C:\Users\Kays_\Documents\Exam_for_27\Dataset\Calibration_images,*.jpg')

我将粘贴的3个文件夹复制到我的工作目录中(也在另一个位置尝试这两个目录),我试图用os.listdir调用它,如下所示

path2 = os.listdir('Calibration_images')
image_list = []
for filename in path2:
    im = PIL.Image.open(filename)
    image_list.append(im)
print(image_list)

这将返回此错误消息:

C:\Users\kays_\PycharmProjects\CompVisionExam\venv\Scripts\python.exe
C:/Users/kays_/PycharmProjects/CompVisionExam/main.py
Traceback (most recent call last):
File "C:/Users/kays_/PycharmProjects/CompVisionExam/main.py", line 41, in <module>
im = PIL.Image.open(filename)
File "C:\Users\kays_\PycharmProjects\CompVisionExam\venv\lib\site-packages\PIL\Image.py", line 2968, in open
fp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'cali (1).jpg'

此错误同时发生在path1path2(在两个目录选项中),但是对于path1它声明:

FileNotFoundError: [Errno 2] No such file or directory: 'C'

对我来说,这意味着图像的位置是正确的,即使它声明不是这样,因为我没有给出文件名,而是工作目录中的文件夹,它返回循环中迭代的第一个图像的名称,但仍然无效

当我在这个循环中使用pathGlob时,它返回一个空列表[]

我尝试过使用此循环:

path2 = os.listdir('Calibration_images')
for image in image_list:
print(image)
img = cv2.imread(image)
cv2.imshow('img', img)
cv2.waitKey(1000)

此过程以exit code 0结束,但不会为pathGlob打开任何图像。代码运行的时间也不够长,无法打开图像但无法显示,因此我也不确定这里出了什么问题!当我使用path1path2时,我收到以下错误消息:

C:\Users\kays_\PycharmProjects\CompVisionExam\venv\Scripts\python.exe C:/Users/kays_/PycharmProjects/CompVisionExam/main.py
cali (1).jpg
Traceback (most recent call last):
File "C:/Users/kays_/PycharmProjects/CompVisionExam/main.py", line 26, in <module>
cv2.imshow('img', img)
cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-q3d_8t8e\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

我以前在另一个脚本中看到过这个错误消息,通过正确创建path变量解决了这个问题,这次我似乎无法做到这一点

我曾在网站上的其他问题上寻求帮助,并随机谷歌搜索,但都无济于事

Folder Structure


Tags: inpy图像image目录img错误users
2条回答

您不在Calibration_images文件夹中,因此无法从那里打开文件,请使用os.chdir('Calibration_images')将目录更改为那里,或者像PIL.Image.open('Calibration_images/'+filename)一样打开

这里有一些问题。我会依次检查每一个

路径1

对于path1,您正在尝试循环遍历目录r'C:\Users\Kays_\PycharmProjects\CompVisionExam\Calibration_images'中的所有文件,但实际操作是循环遍历path1字符串中的每个字符。为了演示,请考虑此代码:

path = r"C:\foo.txt"
for c in path:
    print(c)

这将打印以下内容:

C
:
\
f
o
o
.
t
x
t

路径2

这里的问题是os.listdir列出了目录中所有文件的名称,但这还不足以打开这些文件。要打开它们,您需要的是路径,而不仅仅是文件名

要使用绝对路径执行此操作,可以执行以下操作:

base_dir = r'C:\Users\Kays_\PycharmProjects\CompVisionExam\Calibration_images'
image_list = []
for filename in os.listdir(base_dir):
    path = os.path.join(base_dir, filename)
    image = PIL.Image.open(filename)
    image_list.append(image)

您可以对相对路径执行相同的操作,但需要注意当前目录是什么

base_dir = r'Calibration_images'
image_list = []
for filename in os.listdir(base_dir):
    path = os.path.join(base_dir, filename)
    image = PIL.Image.open(filename)
    image_list.append(image)

如果从C:\Users\Kays_\PycharmProjects\CompVisionExam\文件夹运行此代码,而不是从其他文件夹运行,则此代码将正常工作

pathGlob

你离这里很近。所有阻止您获得正确结果的因素都是输入路径中的错误。试试这个

pathGlob = glob.glob(r'C:\Users\Kays_\Documents\Exam_for_27\Dataset\Calibration_images\*.jpg')
image_list = []
for path in pathGlob:
    image = PIL.Image.open(filename)
    image_list.append(image)

请注意,我已将Calibration_images后面的逗号改为反斜杠

相关问题 更多 >