函数名称 | 描述 |
cv::putText() | 在图片上绘制指定文字 |
cv::getTextSize() | 获取一个文字的宽度和高度 |
绘制文字【cv::putText】
API详解如下
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'
);
其中fontFace参数支持的字体如下
标识符 | 描述 |
FONT_HERSHEY_SIMPLEX = 0 | !< normal size sans-serif font 普通大小无衬线字体 |
FONT_HERSHEY_PLAIN = 1 | !< small size sans-serif font 小号无衬线字体 |
FONT_HERSHEY_DUPLEX = 2 | !< normal size sans-serif font (more complex than FONT_HERSHEY_SIMPLEX) 普通大小无衬线字体 |
FONT_HERSHEY_COMPLEX = 3 | !< normal size serif font 普通大小无衬线字体比 FONT_HERSHEY_DUPLEX 更复杂 |
FONT_HERSHEY_TRIPLEX = 4 | !< normal size serif font (more complex than FONT_HERSHEY_COMPLEX 普通大小无衬字体,比 FONT_HERSHEY_COMPLEX 更复杂 |
FONT_HERSHEY_COMPLEX_SMALL=5 | !< smaller version of FONT_HERSHEY_COMPLEX 小号版本的 FONT_HERSHEY_COMPLEX |
FONT_HERSHEY_SCRIPT_SIMPLEX = 6 | !< hand-writing style font 手写字体 |
FONT_HERSHEY_SCRIPT_COMPLEX=7 | !< more complex variant of FONT_HERSHEY_SCRIPT_SIMPLEX 比 FONT_HERSHEY_SCRIPT_SIMPLEX 更复杂的变体 |
FONT_ITALIC = 16 | !< flag for italic font |
表中列出来的任何一个字体都可以和CV::FONT_ITALIC 组合使用(通过或操作)来得到斜体
每种字体都有一个“自然”大小,当fontScale不是1.0时,在文字绘制之前字体大小将由这个数缩放
验证代码以及结果如下
#include<iostream>
#include<opencv2\opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("E:/myFile/picture/kobe.jpg");
const std::string str1 = "Hello Kobe!";
putText(img, str1, Point2i(40, 150), FONT_HERSHEY_SIMPLEX, 1, Scalar(0, 255, 0), 1, 8, false);
putText(img, str1, Point2i(40, 180), FONT_HERSHEY_PLAIN, 1, Scalar(0, 255, 0), 1, 8, false);
putText(img, str1, Point2i(40, 210), FONT_HERSHEY_DUPLEX, 1, Scalar(0, 255, 0), 1, 8, false);
putText(img, str1, Point2i(40, 240), FONT_HERSHEY_COMPLEX, 1, Scalar(0, 255, 0), 1, 8, false);
putText(img, str1, Point2i(40, 270), FONT_HERSHEY_TRIPLEX, 1, Scalar(0, 255, 0), 1, 8, false);
putText(img, str1, Point2i(40, 300), FONT_HERSHEY_COMPLEX_SMALL, 1, Scalar(0, 255, 0), 1, 8, false);
putText(img, str1, Point2i(40, 330), FONT_HERSHEY_SCRIPT_SIMPLEX, 1, Scalar(0, 255, 0), 1, 8, false);
putText(img, str1, Point2i(40, 360), FONT_HERSHEY_SCRIPT_COMPLEX, 1, Scalar(0, 255, 0), 1, 8, false);
putText(img, str1, Point2i(40, 390), FONT_ITALIC | FONT_HERSHEY_PLAIN, 1, Scalar(0, 255, 0), 1, 8, false);
imshow("kobe", img);
waitKey(0);
return 0;
}
OpenCV基础教程——绘制文字2【cv::getTextSize】见下面网址
https://blog.csdn.net/Gary_ghw/article/details/103746709