多语言展示
当前在线:1265今日阅读:154今日分享:43

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

绪:OpenCV中提供了在图像中插入文字的函数;在1.x版本中,首先要初始化字体结构cvInitFont,然后用cvPutText()函数使用给定的字体和颜色在图像上显示文本字符串。但在2.x版本中,采用getTextSize()和putText()函数在图像上绘制文字。本文主要介绍cvInitFont和cvPutText相结合的文本显示方法;以及getTextSize()和putText()相结合的图像上文本显示方法;
工具/原料

OpenCV 2410

方法/步骤
1

初始化字体结构-cvInitFontcvInitFont初始化字体结构体,字体结构体可以被传递到文字显示函数中。函数原型: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:字体笔划的类型。

2

cvPutText():使用给定的字体和颜色在图像上显示文本字符串这些显示的文本由感兴趣矩形包围着。函数原型:void cvPutText( CvArr* img,//待绘制图像const char* text,//显示的字符串CvPoint org,//第一个字母左下角的坐标const CvFont* font,//指向字体结构的指针CvScalar color );//文本的颜色.

3

结合cvInitFont和cvPutText在图像上显示文本的方法:#include #include #include 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;}

4

getTextSize():获取待绘制文本框的大小,以方便放置文本框函数原型:Size getTextSize( const string& text, //带设置的字符串文本Point origin, //文本框左下角int fontFace, //字符串字体double fontScale, int thickness, //字体笔划的粗细程度int* baseLine );

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; }

注意事项
1

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

2

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

3

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

4

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

推荐信息