让代码更简单

OpenCV在图像中添加显示字符串函数详解

重要:本文最后更新于2019-01-22 08:50:59,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

前面说了使用opencv函数在图像中画线画图形,有了图形还不够,给图像加上字符描述可以让用户更容易理解我们做的程序什么意思。OpenCV在图像中添加显示字符串需要了解这三个函数,它们分别是初始化字体结构函数InitFont、在图像中显示字符串函数PutText、有时我们也许还需要获取字符串的宽度和高度函数GetTextSize。这些函数有哪些参数呢?我们一起来看看,知道参数什么意思才能理解函数。

InitFont

初始化字体结构体。

复制
void cvInitFont( CvFont* font, int font_face, double hscale,
                 double vscale, double shear=0,
                 int thickness=1, int line_type=8 );
font
被初始化的字体结构体。
font_face
字体名称标识符。只是Hershey 字体集的一个子集得到支持。

CV_FONT_HERSHEY_SIMPLEX – 正常大小无衬线字体。
CV_FONT_HERSHEY_PLAIN – 小号无衬线字体。
CV_FONT_HERSHEY_DUPLEX – 正常大小无衬线字体。( 比CV_FONT_HERSHEY_SIMPLEX更复杂)
CV_FONT_HERSHEY_COMPLEX – 正常大小有衬线字体。
CV_FONT_HERSHEY_TRIPLEX – 正常大小有衬线字体 ( 比CV_FONT_HERSHEY_COMPLEX更复杂)
CV_FONT_HERSHEY_COMPLEX_SMALL – CV_FONT_HERSHEY_COMPLEX 的小译本。
CV_FONT_HERSHEY_SCRIPT_SIMPLEX – 手写风格字体。
CV_FONT_HERSHEY_SCRIPT_COMPLEX – 比CV_FONT_HERSHEY_SCRIPT_SIMPLEX更复杂。
这个参数能够由一个值和可选择的CV_FONT_ITALIC字体标记合成,就是斜体字。
hscale
字体宽度。如果等于1.0f,字符的宽度是最初的字体宽度。如果等于0.5f,字符的宽度是最初的字体宽度的一半。
vscale
字体高度。如果等于1.0f,字符的高度是最初的字体高度。如果等于0.5f,字符的高度是最初的字体高度的一半。
shear
字体的斜度。当值为0时 ,字符不倾斜;当值为1.0f时,字体倾斜≈45度,等等。厚度让字母着重显示。函数cvLine用于绘制字母。
thickness
字体笔划的粗细程度。
line_type
字体笔划的类型,参见cvLine。

函数cvInitFont初始化字体结构体,字体结构体可以被传递到文字显示函数中。

PutText

在图像中显示文本字符串。

复制
void cvPutText( CvArr* img, const char* text, CvPoint org, const CvFont* font, CvScalar color );
img
输入图像。
text
要显示的字符串。
org
第一个字符左下角的坐标。
font
字体结构体。
color
文本的字体颜色。

函数cvPutText将具有指定字体的和指定颜色的文本加载到图像中。加载到图像中的文本被感兴趣的矩形框(ROI rectangle)剪切。不属于指定字体库的字符用矩形字符替代显示。

GetTextSize

获得字符串的宽度和高度。

复制
void cvGetTextSize( const char* text_string, const CvFont* font, CvSize* text_size, int* baseline );
font
字体结构体
text_string
输入字符串。
text_size
合成字符串的字符的大小。文本的高度不包括基线以下的部分。
baseline
相对于文字最底部点的基线的Y坐标。

函数cvGetTextSize是用于在指定字体时计算字符串的绑定区域(binding rectangle)。

感觉很棒!可以赞赏支持我哟~

1 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐