在Python3.6.4+OpenCV3.2+Win10环境调用cv2.PutText报错求助
解决OpenCV中
AttributeError: 'module' object has no attribute 'PutText'的问题 这个问题我碰到过好几次啦,本质是OpenCV 3.x版本的Python API命名规则变了,和旧版(比如2.x)的写法不兼容导致的。
问题原因
在OpenCV 2.x的Python绑定里,文本绘制函数是大写开头的cv.PutText,但到了3.x及以后的版本,官方把所有API都改成了小写蛇形命名,对应的函数变成了cv2.putText。你代码里还在用旧的PutText写法,自然会找不到这个属性。
具体解决方案
- 替换函数名:把代码里的
cv.PutText或者cv2.PutText直接改成cv2.putText。 - 检查参数匹配:新版
cv2.putText的参数顺序和旧版略有差异,还要注意字体常量的写法也变了:- 旧版的
cv.CV_FONT_HERSHEY_SIMPLEX要改成cv2.FONT_HERSHEY_SIMPLEX - 其他字体常量同理,去掉前面的
CV_前缀,改成cv2.FONT_xxx格式
- 旧版的
正确示例代码
import cv2 import numpy as np # 创建一个黑色背景图 img = np.zeros((512, 512, 3), np.uint8) # 绘制文本 cv2.putText(img, 'Hello OpenCV!', (10, 500), cv2.FONT_HERSHEY_SIMPLEX, 4, (255, 255, 255), 2, cv2.LINE_AA) # 显示结果 cv2.imshow('Image', img) cv2.waitKey(0) cv2.destroyAllWindows()
额外提醒
如果是从网上旧教程复制的代码,一定要注意区分OpenCV版本——3.x及以后的版本几乎所有函数都采用了小写命名,和2.x的大写开头API不兼容,碰到类似的属性错误,先检查函数名的大小写哦~
内容的提问来源于stack exchange,提问作者Neil Dominic Quijano
相关产品推荐
相关产品推荐

