0

我有 40 张图片,我把它们的名字写在了一个文本文件中。现在我想在我的程序中使用该文本文件(在 Python 中)一一调用这些图像。

我使用 glob 来查找所有图像名称(而不是文本文件)。glob 列表包含这样的名称:

img=['image0.jpg','image1.jpg',....]

现在,如果我访问任何类似的图像img[0]img[1]它只是 image0.jpg 而不是'image0.jpg',所以我在使用opencv函数加载它时遇到了麻烦。我想像这样加载它

cv.LoadImage('image0.jpg')
4

2 回答 2

1

如果您的文件包含文件的完全限定名称。您可以执行以下操作

import cv
with open('textFileOfImages.txt','rb') as f:
    img = [line.strip() for line in f]

#load the images at you leisure
for image in img:
    loadedImage = cv.LoadImage(image)
    #manipulate image

如果您的文件包含当前工作目录的相对路径,则:

import os
import cv
with open('textFileOfImages.txt','rb') as f:
    img = ['%s/%s'%(os.getcwd(),line.strip()) for line in f]

或者,如果您的文件包含当前脚本正在运行的目录的相对路径

import os
import cv
with open('textFileOfImages.txt','rb') as f:
     img = ['%s/%s'%(os.path.dirname(os.path.abspath(__file__)),line.strip()) for line in f]

编辑

如果您需要从多个文件加载图像名称,您可以轻松地合并它。假设您有文件名列表,那么最简单的方法是在with语句之​​外循环。

listOfFilenames = ['filename1.txt','filename2.txt','filename3.txt']
for filename in listOfFilenames: 
    with open(filename,'rb') as f:
    ...
于 2013-10-29T19:01:16.543 回答
0

尝试使用

for _file in img:
    cv.LoadImage("{0}".format(_file))

如果您的文件在其他目录中,

import os
for _file in img:
    cv.LoadImage("{0}".format(os.path.join(directory, _file)))
于 2013-10-29T18:31:52.500 回答