<p>我真的希望我做对了,但我相信您需要一个对列表,并且值应该是从cv2.imread()的相关调用返回的类</p>
<p><strong>简短回答</strong></p>
<p>使用eval(),它接受字符串输入并将其转换为它们表示的python值。例如:</p>
<pre><code>>>> eval("10+10")
20
</code></pre>
<p>见a <a href="https://towardsdatascience.com/python-eval-built-in-function-601f87db191" rel="nofollow noreferrer">nice tutorial on eval here</a></p>
<p><strong>更多详细信息</strong></p>
<p>检查您的请求时,我发现代码中存在另一个问题:
您需要此输出:</p>
<pre><code>[[im1, im2],[im3, im4], [im5, im6], [im7, im8]]
</code></pre>
<p>但是您的循环为您提供了具有相同索引的对,而不是(x,x+1):</p>
<pre><code>[['im0', 'im0'], ['im1', 'im1'], ['im2', 'im2'], ['im3', 'im3']]
</code></pre>
<p>我创建了一个示例文件,该文件回答了您提供的示例值,对代码的更改非常小:</p>
<pre><code>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
</code></pre>
<p>由于我没有这些图像,它只是证明了这些对构造良好,属于Img类型:</p>
<pre><code>$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
</code></pre>