我有以下图片:
im1 = cv2.imread(root + '/' + '1.jpg')
im1_file = '1.jpg'
img1 = (im1,im1_file)
im2 = cv2.imread(root + '/' + '2.jpg')
im2_file = '2.jpg'
img2 = (im2,im2_file)
然后我将图像添加到pairs
列表中,如下所示:
pair = (img1,img2)
pairs.append(pair)
如何访问每对im_file
和img1
中的文件名(即img2
)?
答案 0 :(得分:0)
每当您开始使用编号变量时,请使用列表。
您可以一次性存储文件名,然后可以从该列表中读取文件。
import os
root = '/'
files = ['1.jpg', '2.jpg']
images = [cv2.imread(os.path.join(root, f) for f in files)]
例如,您可以使用images[0]
访问特定项目。
如果您因任何原因需要加入列表,可以zip(files, images)
答案 1 :(得分:0)
您可以使用简单的元组索引来获取文件名(确实是元组中的第二个或1个索引元素)
>>> img1[1]
'1.jpg'
或作为集合:
>>> for pair in pairs:
... print(pair[1])
1.jpg
2.jpg
但是你可能想考虑在这里使用namedtuples
from collections import namedtuple
ImageInfo = namedtuple("ImageInfo", "data name")
img1 = ImageInfo(im1, im1_file)
img2 = ImageInfo(im2, im2_file)
这使您的界面使用
更好一点>>> img1.name
'1.jpg'
>>> for pair in pairs
... print(pair.name)
1.jpg
2.jpg
(在完全公开中,我倾向于过度设计我的数据结构,并且这里的命名元组可能有点过于沉重。取决于上下文。不知道这一点,我倾向于过度复杂化.YMMV。)