opencv学习笔记16-opencv窗口显示字符串

一、函数:

a.putText函数:

(1)函数原型:

CV_EXPORTS_W void putText( InputOutputArray img, const String& text, Point org, 
            int fontFace, double fontScale, Scalar color, int thickness = 1, 
            int lineType = LINE_8, bool bottomLeftOrigin = false );

(2)函数作用:

  • putText 函数在图像 img 上渲染指定的文本字符串。如果某些字符无法使用指定的字体渲染,则会被问号替代。

(3)参数说明:

  • img:要绘制文本的图像。
  • text:要绘制的文本字符串。
  • org:文本字符串在图像中的起始点(左下角)。
  • fontFace:字体类型,见 HersheyFonts
  • fontScale:字体缩放因子,乘以字体特定的基础大小。
  • color:文本颜色,使用 Scalar 类型表示。
  • thickness:用于绘制文本的线条厚度,默认值为 1。
  • lineType:线条类型,见 LineTypes,默认值为 LINE_8,表示线条的抗锯齿。
  • bottomLeftOrigin:当设置为 true 时,表示图像数据的原点在左下角。否则,原点在左上角。

 (4)文本渲染:

  • getTextSize 函数,它可以用于获取文本渲染所需的大小,这对于文本渲染代码很有用。

(5)特殊字符处理:

  • 如果文本中包含无法使用当前字体渲染的字符,这些字符将被问号替代。

(6)坐标原点:

  • bottomLeftOrigin 参数决定了图像的坐标原点位置。在图像处理中,根据这个参数的不同,图像的坐标系可能以左下角或左上角作为原点。
b.HersheyFonts 枚举类型(Hershey字体 );
  • FONT_HERSHEY_SIMPLEX:正常大小的无衬线字体。
  • FONT_HERSHEY_PLAIN:小尺寸的无衬线字体。
  • FONT_HERSHEY_DUPLEX:正常大小的无衬线字体,比 FONT_HERSHEY_SIMPLEX 更复杂。
  • FONT_HERSHEY_COMPLEX:正常大小的有衬线字体。
  • FONT_HERSHEY_TRIPLEX:正常大小的有衬线字体,比 FONT_HERSHEY_COMPLEX 更复杂。
  • FONT_HERSHEY_COMPLEX_SMALLFONT_HERSHEY_COMPLEX 的较小版本。
  • FONT_HERSHEY_SCRIPT_SIMPLEX:手写风格字体。
  • FONT_HERSHEY_SCRIPT_COMPLEXFONT_HERSHEY_SCRIPT_SIMPLEX 的更复杂变体。
  • FONT_ITALIC:斜体字体的标志,可以与其他Hershey字体结合使用来创建斜体效果。

二、示例代码 :

#include <opencv2/core/utils/logger.hpp> 
#include <opencv2/opencv.hpp>           
#include <opencv2/videoio.hpp>         
#include <opencv2/objdetect.hpp>        
#include <opencv2/highgui/highgui_c.h>  
#include <iostream>                  

using namespace cv;                  
using namespace std;                  

int main()
{
	utils::logging::setLogLevel(utils::logging::LOG_LEVEL_SILENT);
	Mat img = Mat::zeros(500, 500, CV_8UC3);//黑色背景

	//定义Hershey字体 
	int typeface[] = { FONT_HERSHEY_SIMPLEX, FONT_HERSHEY_PLAIN, FONT_HERSHEY_DUPLEX, FONT_HERSHEY_COMPLEX,
		FONT_HERSHEY_TRIPLEX, FONT_HERSHEY_COMPLEX_SMALL, FONT_HERSHEY_SCRIPT_SIMPLEX,
		FONT_HERSHEY_SCRIPT_COMPLEX, FONT_ITALIC };


	for (int i = 0; i < 8; i++) {
    //Hershey字体不支持中文
		putText(img, "OpenCV", Point(100, (i + 1) * 50), typeface[i], 1.2, Scalar(255, 255, 255), 2, LINE_AA);
	}

	namedWindow("image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
	imshow("image", img);

	waitKey(0);
	destroyAllWindows();

	return 0;
}

三、运行结果:

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值