我在'estimator.py'的'TfPoseEstimator'类中有一个函数'draw_humans',定义为:
def draw_humans:
global cocoDict
cocoDict = {}
cocoDict = dict(zip(a,zip(b,c)))
'''
'''
return (npimg, cocoDict, dist_dict)
我在main.py模块中调用此函数,并将返回的值分配给这样的变量:
image, cocoDict_clone, dist_dict_clone = TfPoseEstimator.draw_humans(image, humans, imgcopy=False)
但是我得到了上面提到的错误。
Traceback (most recent call last):
File "run_webcam.py", line 306, in <module>
image, cocoDict_clone, dist_dict_clone = TfPoseEstimator.draw_humans(image, humans, imgcopy=False)
File "C:\Python\Python37\summer\PoseEstimation\tf_pose\estimator.py", line 772, in draw_humans
return (npimg, cocoDict, dist_dict)
NameError: name 'cocoDict' is not defined
[ WARN:1] terminating async callback
我什至试图使其全球化,但没有奏效。通常,它确实有效,有人可以解决吗?
答案 0 :(得分:0)
实际上,问题与变量的范围有关(在我的案例中是cocoDict)。该字典已在for循环中初始化,但已在其外部返回。因此,我在for循环之前声明了它,然后在for循环中对其进行了操作后,没有问题地返回了它。
def draw_humans(npimg, humans, imgcopy=False):
global cocoDict
cocoDict = {}
for human in humans:
'''
'''
return (npimg, cocoDict, dist_dict)
我猜想Python的作用域使我付出了很多努力,因为我来自C ++。