为什么在Python OpenCV中'模块'对象不可调用?

0 投票
1 回答
1342 浏览
提问于 2025-04-17 21:24

我有两个模块,我从每个模块中导入了一个元素/对象,并把它们赋值给其他变量,但我还是遇到了错误。我的代码是:

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

你可以在 这里 了解更多这个模块支持的各种“距离”函数。

撰写回答