You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode运行手写数字识别项目报NameError: name 'testing'未定义求助

错误原因

你遇到的是典型的变量未定义错误,代码第86行的testing变量没有在任何位置声明或赋值,属于编写代码时的笔误。get_rect()是Pygame中Surface对象的方法,用于获取文本对应的矩形坐标对象,你刚刚生成的文本Surface对象是textSurface,此处应该调用它的get_rect()方法。

修复步骤
  • 替换报错行代码:将textRecObj = testing.get_rect()改为textRecObj = textSurface.get_rect(),即可解决当前的NameError问题。
  • 可选优化点(不影响核心报错修复,可按需修改):
    1. 标签字典中数字8对应的文本多写了一个字母e,将8:"eEight"修改为8:"Eight",避免识别结果显示错误
    2. 图像保存逻辑的cv2.imwrite调用缺少待保存的图像参数,将cv2.imwrite("image.png")改为cv2.imwrite(f"image_{image_cnt}.png", img_arr),可保证开启IMAGESAVE参数时图像能正常保存

修复后的核心代码段如下:

if PREDICT:
    image = cv2.resize(img_arr, (28,28))
    image = np.pad(image, (10,10), 'constant', constant_values = 0 )
    image = cv2.resize(image, (28,28))/255
    label = str(LABELS[np.argmax(MODEL.predict(image.reshape(1,28,28,1)))])
    textSurface = FONT.render(label, True, RED, WHITE)
    # 修正此处的变量名错误
    textRecObj = textSurface.get_rect()
    textRecObj.left , textRecObj.bottom = rect_min_x, rect_max_Y
    DISPLAYSURF.blit(textSurface, textRecObj)

内容的提问来源于stack exchange,提问作者herj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:54:07