繁体   English   中英

不规则错误-python cv2.imshow NameError:未定义名称“定义”

[英]Irregular Error - python cv2.imshow NameError: name “definition” is not defined

我正在通过cv2.imshow操作员运行视频cv2.imshow 大多数情况下,当我在命令行中调用代码时,代码会运行,但偶尔会出现以下 NameError:

NameError: name 'masked' is not defined

但是,'masked' 在 cv2.imshow 中被调用之前是绝对定义的:

image = frame.array

miniframe = image

masked = cv2.bitwise_and(image, image, mask=circle_img)

cv2.imshow("frame", masked)

当以这种方式定义“masked”时会发生同样的事情:

image = frame.array

miniframe = image

M = np.float32([[1,0,x+w/2],[0,1,y+h/2]])
masked  = cv2.warpAffine(image, M, (x+w, y+h))

cv2.imshow("frame", masked)

当在cv2.imshow行上方插入print masked ,它会导致将数组打印为数字 - 当代码运行时。 当它不工作时,它会导致 NameError 回溯指向print masked

需要明确的是,在任何一种情况下,NameError 似乎都是随机发生的,无需修改代码。 所以,我可以运行它一次或 20 次就好了,但是它会突然无法在命令行中工作,并回溯到cv2.imshow行。 有时,从以前的版本复制粘贴相同的代码块将使其再次工作,但经过几次未修改的尝试后,回到NameError

我已经阅读了Python NameError 当 var IS 最明确定义时,并使用cat -A filename.py来检查不可见的控制字符。 在去缩进和重新缩进之后,它又工作了 2 次,然后又回到了 NameError。

任何帮助将不胜感激!

找到了解决办法。 我的问题与未满足的“蒙面”条件有关。 这是一个依赖于人脸检测的程序,但对于任何必须满足的随机、持续条件,我的问题都是一样的。

故障排除步骤包括: - 查看我的回溯 - 通过在开始时将脸放在相机前面来测试 IRL,然后在开始时将手放在相机上。 这证实了如果在启动时检测到人脸,程序会运行,但如果没有人脸,则不会。

为了解决这个问题,我对cv2.imshow("frame", masked)使用了 try/except 条件,导致代码如下所示:

image = frame.array

miniframe = image

M = np.float32([[1,0,x+w/2],[0,1,y+h/2]])
masked  = cv2.warpAffine(image, M, (x+w, y+h))

try:
    cv2.imshow("frame", masked)
except NameError:
    cv2.imshow("frame", image)

我是一个初学者,这真的教会了我测试和审查回溯的价值!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM