为什么在Python OpenCV中'模块'对象不可调用?
我有两个模块,我从每个模块中导入了一个元素/对象,并把它们赋值给其他变量,但我还是遇到了错误。我的代码是:
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'的数组里。
experiment是一个程序,它也包含了蓝色、绿色和红色的平均值,还有灰度共生矩阵的特征,比如对比度、能量、均匀性和相关性(这是查询图像)。我同样用'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 个回答
1
模块就是模块,不是函数。
距离模块里面有很多函数。你需要选择你想要的那个。例如,如果你想计算通常的欧几里得距离,也就是从 (0, 0)
到 (1, 2)
的距离,你可以使用:
In [6]: from scipy.spatial import distance
In [7]: distance.sqeuclidean( (0, 0), (1, 2) )
Out[7]: 5
你可以在 这里 了解更多这个模块支持的各种“距离”函数。