如何使用python opencv2在窗口中的图像上写文本

我想在图片上放一些文字。 我正在写代码为:

cv2.putText(image,"Hello World!!!", (x,y), cv2.CV_FONT_HERSHEY_SIMPLEX, 2, 255) 

它给出错误,说'模块'对象没有属性'CV_FONT_HERSHEY_SIMPLEX'

查询我不能像上面那样使用字体types? 我在网上search,但只发现与OpenFv C ++的initFont相关的语法。 然后我想使用putText来传递字体types作为参数。 但这不适合我。

有什么build议么?

cv(1)中是CV_FONT_HERSHEY_SIMPLEX吗? 这里是我所有可用的cv2“FONT”:

 FONT_HERSHEY_COMPLEX FONT_HERSHEY_COMPLEX_SMALL FONT_HERSHEY_DUPLEX FONT_HERSHEY_PLAIN FONT_HERSHEY_SCRIPT_COMPLEX FONT_HERSHEY_SCRIPT_SIMPLEX FONT_HERSHEY_SIMPLEX FONT_HERSHEY_TRIPLEX FONT_ITALIC 

放弃'CV_'似乎对我有用。

 cv2.putText(image,"Hello World!!!", (x,y), cv2.FONT_HERSHEY_SIMPLEX, 2, 255) 

此代码使用cv2.putText来叠加图像上的文本。 你需要安装NumPy和OpenCV。

 import numpy as np import cv2 # Create a black image img = np.zeros((512,512,3), np.uint8) # Write some Text font = cv2.FONT_HERSHEY_SIMPLEX bottomLeftCornerOfText = (10,500) fontScale = 1 fontColor = (255,255,255) lineType = 2 cv2.putText(img,'Hello World!', bottomLeftCornerOfText, font, fontScale, fontColor, lineType) #Display the image cv2.imshow("img",img) #Save image cv2.imwrite("out.jpg", img) cv2.waitKey(0) 

这确实是一个恼人的问题。 对于Python 2.xx,你使用:

 cv2.CV_FONT_HERSHEY_SIMPLEX 

和Python 3.xx:

 cv2.FONT_HERSHEY_SIMPLEX 

我建议使用自动完成环境(例如pyscripter或scipy)。 如果你查找示例代码,确保他们使用相同版本的Python(如果他们不确定你改变了代码)。

这是带有参数标签的代码

 def draw_text(self, frame, text, x, y, color=BGR_COMMON['green'], thickness=1.3, size=0.3,): if x is not None and y is not None: cv2.putText( frame, text, (int(x), int(y)), cv2.FONT_HERSHEY_SIMPLEX, size, color, thickness) 

对于字体名称,请参阅此线程中的另一个答案。

摘自@Roeffus的回答

这确实是一个恼人的问题。 对于Python 2.xx,你使用:

cv2.CV_FONT_HERSHEY_SIMPLEX和Python 3.xx:

cv2.FONT_HERSHEY_SIMPLEX

欲了解更多信息,请参阅http://www.programcreek.com/python/example/83399/cv2.putText