在Qt中解决opencv的putText函数无法绘制中文的一种解决方法

这篇具有很好参考价值的文章主要介绍了在Qt中解决opencv的putText函数无法绘制中文的一种解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.问题

在opencv中,假如直接使用putText绘制中文,会在图像上出现问号,如下图所示:
在Qt中解决opencv的putText函数无法绘制中文的一种解决方法,opencv,Qt相关,qt,opencv,开发语言

2.查阅资料

查了一些资料,说想要解决这个问题,需要用到freetype库或者用opencv5(详情请查看文末的参考资料)。但是我现在用的是opencv4,freetype库已经被移到opencv_contrib去了,用起来麻烦,而且用freetype的话,其实也是相当于用了第三方库来实现:

...
	cv::Ptr<cv::freetype::FreeType2> ft2;
	ft2=cv::freetype::createFreeType2();
...
	// then put the text itself
	ft2->putText(img, text, textOrg, fontHeight,
             cv::Scalar(255,0,0), thickness, linestyle, true );

那我Qt也是第三方库啊,还倒不如直接用Qt实现呢。

3.解决办法

于是,我实现了一个myPutText函数

int myPutText(cv::Mat &img, QString text, QPoint org, QFont font, QPen pen)
{
    QImage::Format imgFormat;

    switch (img.channels()) {
    case 1:
        imgFormat = QImage::Format_Grayscale8;
        break;
    case 3:
        imgFormat = QImage::Format_RGB888; // 没有BGR格式,因此要注意一下pen的color
        break;
    default:
        return -1;
        break;
    }

		// 直接共享了Mat的内存,不存在内存复制。所以应该不怎么耗时
    QImage tmpImg(img.data, img.cols, img.rows, img.step, imgFormat);

    QPainter painter(&tmpImg);
    painter.setPen(pen);
    painter.setFont(font);
    painter.drawText(org, text);

    return 0;
}

用法如下:

    cv::Mat img = cv::imread("4.bmp", cv::IMREAD_COLOR);
    cv::resize(img, img, cv::Size(640, 480));

    QString tempText = "中文";

    QPen pen;
    pen.setColor(QColor(0, 255, 0));

    QFont font;
    font.setPixelSize(32);

    myPutText(img, tempText, QPoint(100, 100), font, pen);

//    cv::putText(img, tempText.toStdString(), cv::Point(100, 100), cv::FONT_HERSHEY_TRIPLEX, 1.0, cv::Scalar(255, 255, 0));
    cv::imshow("img", img);

效果如下:

在Qt中解决opencv的putText函数无法绘制中文的一种解决方法,opencv,Qt相关,qt,opencv,开发语言


参考资料
【关于OpenCV无法putText汉字的坑】
【听说putText()支持中文了?!】文章来源地址https://www.toymoban.com/news/detail-741737.html

到了这里,关于在Qt中解决opencv的putText函数无法绘制中文的一种解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV使用putText将文字绘制到图像上

    2024年02月15日
    浏览(44)
  • Opencv cv2.putText 函数详解

    具体函数如下: 函数源码如下: 对应的参数如下: 参数 具体表述 image 绘制的图像 text 绘制的文本 org 文本在图像中显示的坐标,用元组表示格式为(X坐标,Y坐标) font 文本字体类型,值可以为 FONT_HERSHEY_SIMPLEX 、 FONT_HERSHEY_PLAIN fontScale 字体比例因子乘以font-specific基本大小 c

    2024年02月09日
    浏览(75)
  • Ubuntu 下安装Qt5.12.12无法输入中文解决方法

    (1)VMware Workstation 15 Pro (2)Ubuntu 20.04 (3)Qt 5.12.12 64bits (4)Qt Creator 5.0.2 (5)已经安装了fcitx,google拼音和搜狗拼音。 安装完Qt 5.12.12后,打开Qt Creator,发现无法输入中文,并且点击Ubuntu左上角的键盘,也无法切换中文输入,Ubuntu已经安装了Fcitx。但是在其他的环境下是

    2024年02月11日
    浏览(47)
  • opencv-python库 cv2 图形绘制 cv2.line()cv2.rectangle()cv2.circle()cv2.ellipse()cv2.polylines()cv2.putText

    cv2.line() 是 OpenCV 中的一个函数,用于在图像上绘制直线。这个函数需要指定图像、线的起点和终点坐标、线的颜色、线的宽度以及线的类型。 下面是 cv2.line() 函数的详细参数说明: 参数解释: 下面是一个使用 cv2.line() 绘制直线的简单示例: 在这个例子中,我们创建了一个

    2024年04月23日
    浏览(51)
  • Opencv C++ 绘制中文

    GitHub - ITC-AI/Opencv_Chinese: C++ 的 Opencv绘制中文 参考 https://blog.csdn.net/long630576366/article/details/131440684 X64的编译链 Arm的编译链 (1) 安装opencv 在 Ubuntu 上安装 OpenCV,你可以使用以下命令: 在 CentOS 上安装 OpenCV,你可以使用以下命令: (2) 安装FreeType 在 Ubuntu 上安装 FreeType,可以使用

    2024年04月17日
    浏览(36)
  • OpenCV官方教程中文版 —— 直方图的计算,绘制与分析

    • 使用 OpenCV 或 Numpy 函数计算直方图 • 使用 Opencv 或者 Matplotlib 函数绘制直方图 • 将要学习的函数有:cv2.calcHist(),np.histogram() 什么是直方图呢?通过直方图你可以对整幅图像的灰度分布有一个整体的了解。直方图的 x 轴是灰度值(0 到 255),y 轴是图片中具有同一个灰度

    2024年02月06日
    浏览(47)
  • opencv中绘制图像的函数

    OpenCV 中用于绘制不同图形的 C++ 函数的简要介绍: 绘制矩形框: image :目标图像 pt1  和  pt2 :矩形的对角线顶点坐标 color :矩形的颜色 thickness :线条的粗细,如果为负数,表示填充矩形 绘制文字: image :目标图像 text :要绘制的文本 org :文本的起始坐标 fontFace :字体

    2024年02月06日
    浏览(45)
  • 详解OpenCV的椭圆绘制函数ellipse()

    函数ellipse()用于在图像上绘制椭圆。 有两种原型,这里只列出常用的那种。 C++原型如下: Python原型如下: 参数意义如下: img—绘制的椭圆所在的图像。 center—椭圆的中心坐标。 axes—椭圆的长半轴和短半轴的长度。 angle—椭圆旋转的角度,单位为度。 startAngle—椭圆孤起始

    2024年02月15日
    浏览(37)
  • Ubuntu下不能切换中文,qt creator无法输入中文,sogo输入法(详细步骤)

    目录: 1、解决ubuntu 不支持切换中文,并安装sogo输入法步骤; 2、解决Qt Creator不支持中文输入: 详细步骤: 一、解决ubuntu 不支持切换中文,并安装sogo输入法步骤: 1、如果在键盘输入法系统中,没有“fcitx”选项时,建议先打开终端手动安装 fcitx:sudo apt-get install fcitx 2、添

    2023年04月18日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包