调用anna_phog提取图像特征触发int与内置方法不支持/运算的TypeError
问题根因
报错的核心原因是命名冲突+变量未定义:
- 你在业务代码中调用
anna_phog(img, bin, angle, Level, roi)时,没有提前定义名为bin的数值变量(bin是phog算法的直方图分桶数参数) - 业务代码中的
from numpy import *语句将numpy内置的bin()函数导入了全局命名空间,你传入的bin实际是函数对象,而非数值。在anna_BinMatrix函数执行nAngle = angle/bin时,就出现了「int类型不能和内置函数对象做除法」的类型错误。
修复方案
按以下步骤修改即可解决问题:
- 删掉业务代码中不规范的
from numpy import *语句,这种全局导入极易引发命名冲突。原代码中用到的numpysize方法,替换为np.size调用即可(你已经提前导入了import numpy as np) - 在业务代码的参数定义段,补充
bin参数的数值定义,示例如下(数值可根据你的算法需求调整):
S = 8 bin = 8 # 新增:直方图分桶数 angle = 360 Level = 3 roi = [1,225,1,300] save=True
- (可选优化)建议将phog实现代码中所有的参数名
bin改为bin_num之类的别名,彻底避免和Python/numpy内置的bin函数重名。
修改完成后重新运行代码即可正常执行。
内容的提问来源于stack exchange,提问作者Lila
相关产品推荐
相关产品推荐

