Я действительно надеюсь, что понял это правильно, но я верю, что вам нужен список пар, и значения должны быть классом, возвращаемым из соответствующего вызова cv2.imread ().
Краткий ответ
Используйте eval (), который принимает строковые входные данные и преобразует их в значение python, которое они представляют. Например:
>>> eval("10+10")
20
См. хороший учебник по eval здесь .
Подробнее
Изучение вашего запроса I увидеть еще одну проблему в вашем коде: Вы хотели этот вывод:
[[im1, im2],[im3, im4], [im5, im6], [im7, im8]]
Но ваш l oop дал вам пары с тем же индексом, а не (x, x + 1):
[['im0', 'im0'], ['im1', 'im1'], ['im2', 'im2'], ['im3', 'im3']]
Я создал файл примера, который соответствует предоставленным вами значениям примера, с минимальными изменениями в коде:
class Img(object):
""" I'm an image from imread """
def __init__(self, var_name):
self.var_name = var_name
def __str__(self):
return "I'm of class Img and my var name is {var}".format(var=self.var_name)
if __name__ == "__main__":
im1 = Img("im1")
im2 = Img("im2")
im3 = Img("im3")
im4 = Img("im4")
im5 = Img("im5")
im6 = Img("im6")
im7 = Img("im7")
im8 = Img("im8")
n = 4
m = 2
a = [[eval('im{0}'.format(2*i+1)),eval('im{0}'.format(2*i+2))] for i in range(n)]
for pair in a:
print "We are a pair:"
for obj in pair:
print obj
Поскольку у меня нет изображений, он просто демонстрирует, что пары хорошо построены и имеют введите Img:
$python ./example.py
We are a pair:
I'm of class Img and my var name is im1
I'm of class Img and my var name is im2
We are a pair:
I'm of class Img and my var name is im3
I'm of class Img and my var name is im4
We are a pair:
I'm of class Img and my var name is im5
I'm of class Img and my var name is im6
We are a pair:
I'm of class Img and my var name is im7
I'm of class Img and my var name is im8