我刚从python开始。我有4个变量F_1,F_2,F_3和F_4。每个都包含一个矩阵。我想计算它们中的非零值。所以我写了一个循环。你知道吗
f_1 = thresh1[1:mr, 1:mc]
f_2 = thresh1[1:mr, (mc+1):width]
f_3 = thresh1[(mr+1):height, 1:mc]
f_4 = thresh1[(mr+1):height, (mc+1):width]
b_1 = thresh2[1:mr, 1:mc]
b_2 = thresh2[1:mr, (mc+1):width]
b_3 = thresh2[(mr+1):height, 1:mc]
b_4 = thresh2[(mr+1):height, (mc+1):width]
for i in range(1, 5):
n1 = "f_"
n2 = "b_"
num = str(i)
n1 += num
n2 += num
r = cv2.countNonZero((n1)/cv2.countNonZero(n2))
print r
我想把串接的字符串n1
和n2
作为输入传递给方程cv2.countNonZero((n1)/cv2.countNonZero(n2))
。你知道吗
这里F1是二值图像(F为前景),B1也是二值图像(B为背景)。我试图计算前景和背景中非零像素的比率。你知道吗
应计算F1/B1的r,并在下一次迭代F2/B2中。。。以此类推
理想情况下,您可以将f_1等放入一个列表中并对其进行迭代,而不是为每个列表定义新的名称,请参见@apnorton给出的答案。你知道吗
所以,最后:
您有一个问题,您试图使用字符串来引用变量名。这相当困难;最好使用列表来包含图像。也就是说,不要试图引用
f_1
、f_2
等,而是创建一个名为f
的列表,其中包含每个图像。你知道吗例如,不要使用顶部的代码,而是使用:
现在您可以使用代码
f[1]
引用之前调用的f_1
。你知道吗现在,在循环中,可以使用:
我建议您研究如何在Python中使用列表,因为这是一种基本的数据结构。另外,
"f_1"
(字符串)和f_1
(变量名为f_1
)之间也有区别。你不能(轻易)介于两者之间。你知道吗相关问题 更多 >
编程相关推荐