OpenCV:在图像上显示文本信息

2025-10-16 12:37:53

1、初始化字体结构-cvInitFont

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

函数原型:

void cvInitFont( CvFont* font, //被初始化的字体结构体

int font_face, //字体名称标识符

double hscale,//字体宽度

double vscale, //字体高度

double shear=0,//字体斜度

int thickness=1, //字体笔划的粗细程度

int line_type=8 ); //字体笔划的类型

参数:

hscale:字体宽度。如果等于1.0f,字符的宽度是最初的字体宽度。如果等于0.5f,字符的宽度是最初的字体宽度的一半。

vscale:字体高度。如果等于1.0f,字符的高度是最初的字体高度。如果等于0.5f,字符的高度是最初的字体高度的一半。

shear:字体的斜度。当值为0时 ,字符不倾斜;当值为1.0f时,字体倾斜≈45度,等等。厚度让字母着重显示。函数cvLine用于绘制字母。

thickness:字体笔划的粗细程度。

line_type:字体笔划的类型。

OpenCV:在图像上显示文本信息

2、cvPutText():使用给定的字体和颜色在图像上显示文本字符串

这些显示的文本由感兴趣矩形包围着。

函数原型:

void cvPutText( 

CvArr* img,//待绘制图像

const char* text,//显示的字符串

CvPoint org,//第一个字母左下角的坐标

const CvFont* font,//指向字体结构的指针

CvScalar color );//文本的颜色.

OpenCV:在图像上显示文本信息

3、结合cvInitFont和cvPutText在图像上显示文本的方法:

#include <opencv2\opencv.hpp>

#include <opencv2\highgui\highgui.hpp>

#include <opencv2\core\core.hpp>

using namespace std; 

using namespace cv; 

int main(){

IplImage* OriginImage=cvLoadImage("raw.jpg",1);

CvFont font;

cvInitFont(&font,CV_FONT_HERSHEY_COMPLEX,1.0,1.0,0,2,8);

cvPutText(

OriginImage,

"Hello every one!",

 cvPoint(OriginImage->width/2-100,OriginImage->height/2),

&font,

cvScalar(255,0,0));

cvShowImage("show",OriginImage);

cvWaitKey(0);

return 0;}

OpenCV:在图像上显示文本信息

OpenCV:在图像上显示文本信息

4、getTextSize():获取待绘制文本框的大小,以方便放置文本框

函数原型:

Size getTextSize( 

const string& text, //带设置的字符串文本

Point origin, //文本框左下角

int fontFace, //字符串字体

double fontScale, 

int thickness, //字体笔划的粗细程度

int* baseLine 

);  

OpenCV:在图像上显示文本信息

5、putText():在图像中绘制文本信息

函数原型:

void putText( 

Mat& img, // 待绘制的图像 

const string& text, // 待绘制的文字 

Point origin, // 文本框的左下角 

int fontFace, // 字体 (如cv::FONT_HERSHEY_PLAIN) 

 double fontScale, // 尺寸因子,值越大文字越大 

Scalar color, // 线条的颜色(RGB) 

int thickness = 1, // 线条宽度 

int lineType = 8, // 线型(4邻域或8邻域,默认8邻域) 

bool bottomLeftOrigin = false // true='origin at lower left' 

);  

OpenCV:在图像上显示文本信息

6、getTextSize()和putText()结合的应用:

程序:

int main()

{

       //创建空白图用于绘制文字 

       Mat image = cv::Mat::zeros(cv::Size(640, 480), CV_8UC3); 

       //设置蓝色背景 

       image.setTo(cv::Scalar(100, 0, 0)); 

       //设置绘制文本的相关参数 

       string text = "Hello World!"; 

       int font_face = cv::FONT_HERSHEY_COMPLEX;  

       double font_scale = 2; 

       int thickness = 2; 

       int baseline; 

       //获取文本框的长宽 

       Size text_size = getTextSize(text, font_face, font_scale, thickness, &baseline); 

       //将文本框居中绘制 

       Point origin;  

       origin.x = image.cols / 2 - text_size.width / 2; 

       origin.y = image.rows / 2 + text_size.height / 2; 

       putText(image, text, origin, font_face, font_scale, cv::Scalar(0, 255, 255), thickness, 8, 0); 

       //显示绘制解果 

       imshow("image", image); 

       waitKey(0); 

       return 0; 

}

OpenCV:在图像上显示文本信息

OpenCV:在图像上显示文本信息

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢