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

在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:39:02