为什么'模块'对象在python opencv中不可调用?

时间:2014-03-08 07:40:34

标签: python opencv euclidean-distance

我有两个模块,我从每个模块(程序)导入1个元素/对象,我将其分配给其他一些变量,但我仍然收到此错误。 我的代码是:

from CBIR import feature_matrix_db
from experiment import feature_matrix_ip
from scipy.spatial import distance

i = 0
a_list = list()
b_list = list()
a_list.append(feature_matrix_ip)
while i < 50:
   b_list.append(feature_matrix_db[i])
   dist = distance(a_list,b_list)
   print dist
   i = i + 1 

CBIR是一个包含蓝色,绿色和红色均值的程序,以及灰度共生矩阵特征,如对比度,能量,同质性和相关性(对于存储在数据库中的图像)。并且我使用'zip'函数将所有这些存储在一个数组中,变量名称为'feature_matrix_db'

实验是一个程序,包含蓝色,绿色和红色的平均值,以及灰度级共生矩阵特征,如对比度,能量,同质性和相关性(对于查询图像)。并且我使用'zip'函数将所有这些存储在一个数组中,变量名称为'feature_matrix_ip'

现在我正在尝试计算欧氏距离,它给了我错误:

 10 while i < 50:
 11     b_list.append(feature_matrix_db[i])
 ---> 12     dist = distance(a_list,b_list)
 13     print dist
 14     i = i + 1

 TypeError: 'module' object is not callable 

谢谢!

1 个答案:

答案 0 :(得分:1)

模块是模块而非功能。

距离模块包含许多功能。你需要选择你想要的那个。例如,如果您想要(0, 0)(1, 2)之间通常的欧几里德距离,请使用:

In [6]: from scipy.spatial import distance
In [7]: distance.sqeuclidean( (0, 0), (1, 2) )
Out[7]: 5

您可以阅读有关此模块here支持的众多“距离”功能的更多信息。