VSCode运行手写数字识别项目报NameError: name 'testing'未定义求助
错误原因
你遇到的是典型的变量未定义错误,代码第86行的testing变量没有在任何位置声明或赋值,属于编写代码时的笔误。get_rect()是Pygame中Surface对象的方法,用于获取文本对应的矩形坐标对象,你刚刚生成的文本Surface对象是textSurface,此处应该调用它的get_rect()方法。
修复步骤
- 替换报错行代码:将
textRecObj = testing.get_rect()改为textRecObj = textSurface.get_rect(),即可解决当前的NameError问题。 - 可选优化点(不影响核心报错修复,可按需修改):
- 标签字典中数字8对应的文本多写了一个字母e,将
8:"eEight"修改为8:"Eight",避免识别结果显示错误 - 图像保存逻辑的
cv2.imwrite调用缺少待保存的图像参数,将cv2.imwrite("image.png")改为cv2.imwrite(f"image_{image_cnt}.png", img_arr),可保证开启IMAGESAVE参数时图像能正常保存
- 标签字典中数字8对应的文本多写了一个字母e,将
修复后的核心代码段如下:
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
相关产品推荐
相关产品推荐

