如何在OpenCV-Python中将文本打印到框架中

4
我正在使用opencv-python进行人脸检测实验。我还想使用cv.drawRect函数。我尝试使用cv.putText,但它在Python中不受支持。除了cv.putText之外,是否有其他函数可以将文本写入图像帧?

你尝试过什么?你是使用空白的OpenCV还是PyOpenCV? - user1767754
我尝试使用OpenCV-Python,导入cv2.cv作为cv,但当我使用cv.puttext时,它会出现错误,提示包cv没有属性puttext。 - slaveCoder
如果您分享一些代码,我可以查看它,cv.putText当然是被支持的。 - user1767754
你应该完全不使用已弃用的cv包,而只使用cv2。(是的,它有cv2.putText()) - berak
2个回答

8
明白了。在旧版本的python-opencv中,请使用PutText而不是putText。
font = cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 3, 8) #Creates a font
x = 10 #position of text
y = 20 #position of text
cv.PutText(image,"Hello World!!!", (x,y),font, 255) #Draw the text

1

如果有人对新版本的opencv-python感兴趣:

import cv2

font = cv2.FONT_HERSHEY_DUPLEX
color = (255, 0, 0) # red
fontsize = 255
text = "test"
position = (10, 10)

cv2.putText(image, text, position, font, fontsize, color=color)

可用的默认字体在modules/imgproc/include/opencv2/imgproc.hpp头文件中定义:
enum HersheyFonts {
    FONT_HERSHEY_SIMPLEX        = 0, //!< normal size sans-serif font
    FONT_HERSHEY_PLAIN          = 1, //!< small size sans-serif font
    FONT_HERSHEY_DUPLEX         = 2, //!< normal size sans-serif font (more complex than FONT_HERSHEY_SIMPLEX)
    FONT_HERSHEY_COMPLEX        = 3, //!< normal size serif font
    FONT_HERSHEY_TRIPLEX        = 4, //!< normal size serif font (more complex than FONT_HERSHEY_COMPLEX)
    FONT_HERSHEY_COMPLEX_SMALL  = 5, //!< smaller version of FONT_HERSHEY_COMPLEX
    FONT_HERSHEY_SCRIPT_SIMPLEX = 6, //!< hand-writing style font
    FONT_HERSHEY_SCRIPT_COMPLEX = 7, //!< more complex variant of FONT_HERSHEY_SCRIPT_SIMPLEX
    FONT_ITALIC                 = 16 //!< flag for italic font
};

visual font example

(图片来源:Code Yarns



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接