前面说了使用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)。
评论 (0)