目录
1 概念讲解及用处
在计算机视觉和图像处理中,图像添加文字是一种常见的操作。它可以用于标注图像中的物体、描述图像的内容、生成带有说明或标题的图片等。通过向图像添加文字,可以提供更多的信息,增强图像的可读性和可理解性。
2 函数详解
OpenCV库提供了一个函数cv::putText()来实现图像添加文字的功能。
void cv::putText(cv::InputOutputArray img, const String& text, cv::Point org, int fontFace,
double fontScale, cv::Scalar color, int thickness = 1,
int lineType = LINE_8, bool bottomLeftOrigin = false );
img:要绘制文本的图像。
text:要添加的文本字符串。
org:文本的起始位置(左下角)。
fontFace:字体类型,默认为cv::FONT_HERSHEY_SIMPLEX。
fontScale:字体缩放因子,默认为1.0。
color:文本颜色,默认为白色。
thickness:文本轮廓线的粗细,默认为1。
lineType:文本轮廓线的类型,默认为8。
bottomLeftOrigin:如果为true,则原点位于文本左下角;否则,原点位于文本左上角。
3 原理
图像添加文字的数学原理比较简单,主要涉及到坐标系和文本渲染。在OpenCV中,图像的坐标系原点通常位于左上角,而文本渲染通常采用笛卡尔坐标系,即原点位于左下角。因此,在绘制文本时,需要根据图像坐标系和文本渲染坐标系的不同,进行相应的坐标转换。
4 用C++编写代码进行实现
下面是一个使用OpenCV在图像上添加文字的示例代码:
#include <opencv2/opencv.hpp>
int main(){
// 读取图像
cv::Mat image = cv::imread("image.jpg");
// 添加文字
cv::putText(image, "Hello Opencv", cv::Point(10, 50), cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(255, 255, 255), 1, cv::LINE_8, false);
// 显示图像
cv::imshow("Image with Text", image);
cv::waitKey(0);
return 0;
}
在上述代码中,我们首先使用cv::imread()函数读取一张图像,然后使用cv::putText()函数将文字"Hello Opencv"添加到图像中的位置(10, 50)处,最后使用cv::imshow()函数显示带有文字的图像。