Qt-OpenCV学习笔记--绘制文本--getTextSize()和putText()

概述

在OpenCV中绘制文本,需要用到getTextSize()和putText()。

第一个函数:getTextSize()

函数说明

cv::getTextSize
(
	const String & 	text,
    int 	fontFace,
    double 	fontScale,
    int 	thickness,
    int * 	baseLine 
)	

参数说明 

text 绘制的文本
fontFace 字体
fontScale 字体的放大倍数
thickness 绘制线条的粗细
baseLine 相对于最底部文本的基线y坐标指向

返回

返回包含指定文本框的大小,是cv::Size 类型。

第二个函数:putText()

函数说明

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

参数说明

img 图像
text 要绘制的文本
org 绘制文本的左下角
fontFace 字体
fontScale 放大倍数
color 颜色
thickness 线宽
lineType 线条类型
bottomLeftOrigin false文本正常显示;true文本垂直翻转。

测试代码

#include "widget.h"
#include "ui_widget.h"

#include 

#include 
#include 
#include 

#include 

using namespace cv;
using namespace std;

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //新建画板
    cv::Mat mat(500,600,CV_8UC3,Scalar(100,0,0));

    //文本的参数
    string text = "congratulations!";//定义文本
    int fontFace = FONT_HERSHEY_COMPLEX_SMALL;//定义字体
    double fontScale = 2;//定义大小
    int thickness = 2;//定义线宽
    int baseline = 0;

    //获取文本框的大小
    Size size = getTextSize(text,fontFace,fontScale,thickness,&baseline);

    //文本位置
    Point origin;
    origin.x = mat.size().width/2 - size.width/2;
    origin.y = mat.size().height/2 + size.height/2;

    //其它参数
    Scalar color = Scalar(0,255,0);//定义颜色
    int lineType = 8;//定义线段类型
    bool bottomLoftOrigin = false;//定义左远点

    //绘制文本
    putText(mat,text,origin,fontFace,fontScale,color,thickness,lineType,bottomLoftOrigin);

    //显示
    imshow("mat",mat);

}

Widget::~Widget()
{
    delete ui;
}

测试结果

Qt-OpenCV学习笔记--绘制文本--getTextSize()和putText()_第1张图片

参考

文字绘制——putText详解

getTextSize()和putText()

解决opencv putText()乱码问题

OpenCV puttext不调库显示中文

你可能感兴趣的:(opencv,学习,qt,计算机视觉)