文字绘制——cv::putText详解

xiaoxiao2021-02-28  102

【OpenCV3】文字绘制——cv::putText详解

标签: opencv图形 1917人阅读 评论(0) 收藏 举报 分类: OpenCV(40) 作者同类文章 X 图像处理(46) 作者同类文章 X

OpenCV中除了提供绘制各种图形的函数外,还提供了一个特殊的绘制函数——在图像上绘制文字。这个函数即是cv::putText()。

具体形式如下:

[cpp] view plain copy print ? void cv::putText(      cv::Mat& img, // 待绘制的图像      const string& text, // 待绘制的文字      cv::Point origin, // 文本框的左下角      int fontFace, // 字体 (如cv::FONT_HERSHEY_PLAIN)      double fontScale, // 尺寸因子,值越大文字越大      cv::Scalar color, // 线条的颜色(RGB)      int thickness = 1, // 线条宽度      int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)      bool bottomLeftOrigin = false // true='origin at lower left'  );   void cv::putText( cv::Mat& img, // 待绘制的图像 const string& text, // 待绘制的文字 cv::Point origin, // 文本框的左下角 int fontFace, // 字体 (如cv::FONT_HERSHEY_PLAIN) double fontScale, // 尺寸因子,值越大文字越大 cv::Scalar color, // 线条的颜色(RGB) int thickness = 1, // 线条宽度 int lineType = 8, // 线型(4邻域或8邻域,默认8邻域) bool bottomLeftOrigin = false // true='origin at lower left' );

opencv支持的文字字体有以下几种:

另外,我们在实际绘制文字之前,还可以使用cv::getTextSize()接口先获取待绘制文本框的大小,以方便放置文本框。具体调用形式如下:

[cpp] view plain copy print ? cv::Size cv::getTextSize(      const string& text,      cv::Point origin,      int fontFace,      double fontScale,      int thickness,      int* baseLine  );   cv::Size cv::getTextSize( const string& text, cv::Point origin, int fontFace, double fontScale, int thickness, int* baseLine );

下面就通过一个示例,来看看cv::getTextSize()与cv::putText()相结合的妙用:

[cpp] view plain copy print ? //创建空白图用于绘制文字  cv::Mat image = cv::Mat::zeros(cv::Size(640, 480), CV_8UC3);  //设置蓝色背景  image.setTo(cv::Scalar(100, 0, 0));    //设置绘制文本的相关参数  std::string text = "Hello World!";  int font_face = cv::FONT_HERSHEY_COMPLEX;   double font_scale = 2;  int thickness = 2;  int baseline;  //获取文本框的长宽  cv::Size text_size = cv::getTextSize(text, font_face, font_scale, thickness, &baseline);    //将文本框居中绘制  cv::Point origin;   origin.x = image.cols / 2 - text_size.width / 2;  origin.y = image.rows / 2 + text_size.height / 2;  cv::putText(image, text, origin, font_face, font_scale, cv::Scalar(0, 255, 255), thickness, 8, 0);    //显示绘制解果  cv::imshow("image", image);  cv::waitKey(0);  return 0;   //创建空白图用于绘制文字 cv::Mat image = cv::Mat::zeros(cv::Size(640, 480), CV_8UC3); //设置蓝色背景 image.setTo(cv::Scalar(100, 0, 0)); //设置绘制文本的相关参数 std::string text = "Hello World!"; int font_face = cv::FONT_HERSHEY_COMPLEX; double font_scale = 2; int thickness = 2; int baseline; //获取文本框的长宽 cv::Size text_size = cv::getTextSize(text, font_face, font_scale, thickness, &baseline); //将文本框居中绘制 cv::Point origin; origin.x = image.cols / 2 - text_size.width / 2; origin.y = image.rows / 2 + text_size.height / 2; cv::putText(image, text, origin, font_face, font_scale, cv::Scalar(0, 255, 255), thickness, 8, 0); //显示绘制解果 cv::imshow("image", image); cv::waitKey(0); return 0;

绘制解果如下:

2017.03.30

顶 0 踩 0     上一篇【OpenCV3】几何图形(直线、矩形、圆、椭圆、多边形等)绘制 下一篇【OpenCV3】彩色映射——cv::applyColorMap()与cv::LUT()详解

  相关文章推荐 • opencv 中的 cvPutText() 函数的使用 • 我的OpenCV学习笔记(七):绘图操作 • opencv中图片添加文字 • Opencv310图片Mat中叠加汉字(freetype+VS2015) • 【OpenCV3.0.0】各个modules的功能介绍(包含Contribute库) • OpenCV例子三:将文字生成视频文件 • 机器学习笔记-opencv2与opencv3手写体字母或者数字识别 • Opencv中在图片上显示文本 • OpenCV+OCR 图像处理字符识别原理及代码 • Win10+VS2017编译opencv3.2.0和opencv_contrib3.2.0来调用text模块
转载请注明原文地址: https://www.6miu.com/read-83756.html

最新回复(0)