有时候我们在操作图像时需要在图像上显示一些文字,就像ps那样在图像上添加各种各样的文字,让图像与文字融合在一起,opencv中就提供了在在图像中显示字符串的函数,下面我们详细介绍下这些函数的参数与使用方法,看了参数大家应该都会使用才对。
PutText
在图像中显示文本字符串。
void cvPutText( CvArr* img, const char* text, CvPoint org, const CvFont* font, CvScalar color );
- img
- 输入图像。
- text
- 要显示的字符串。
- org
- 第一个字符左下角的坐标。
- font
- 字体结构体。
- color
- 文本的字体颜色。
函数cvPutText将具有指定字体的和指定颜色的文本加载到图像中。加载到图像中的文本被感兴趣的矩形框(ROI rectangle)剪切。不属于指定字体库的字符用矩形字符替代显示。
我们注意到上面的PutText函数有个参数是字体结构体,这个参数需要使用下面的InitFont函数得到。
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初始化字体结构体,字体结构体可以被传递到文字显示函数中。
一般有上面两个函数即可在图像中融合文字字符串,不过有时候你可能需要下面的函数帮你做些特殊操作。
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)。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/241754.html