我有40张图片,我已将它们的名字写在文本文件中。现在我想在我的程序中逐个调用这些图像,使用该文本文件(在Python中)。
我用glob来查找所有图像名称(而不是文本文件)。 glob list包含如下名称:
img=['image0.jpg','image1.jpg',....]
现在如果我访问img[0]
,img[1]
之类的任何图片,那么它只是image0.jpg而不是'image0.jpg'
,
所以我加载opencv
函数来加载它时遇到了麻烦。
我想像
cv.LoadImage('image0.jpg')
答案 0 :(得分: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:
...
答案 1 :(得分: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)))