博客
关于我
opencv putText中文乱码
阅读量:801 次
发布时间:2023-02-23

本文共 774 字,大约阅读时间需要 2 分钟。

OpenCV默认不支持渲染中文字符,因为其cv::putText()函数仅支持ASCII字符。要支持中文字符渲染,需要依赖于支持UTF-8编码的库,如Qt。以下是解决该问题的详细步骤:

  • 编译OpenCV时选择WITH_QT选项

    • 在CMake配置中启用WITH_QT和WITH_OPENGL选项。这会集成OpenCV与Qt库,支持Unicode字符渲染。
  • 使用cv::addText()函数

    • 在编译完成后,可以使用cv::addText()方法来在图像上添加中文字符。例如:
      Mat img = imread("lena.jpg");cv::addText(img, "中文测试", cv::Point(100, 50), cv::fontQt("Times"));imwrite("res.bmp", img);
  • 处理窗口问题

    • 如果在没有创建窗口的情况下调用cv::addText(),可能会遇到错误。为避免此问题,可以在程序开始时创建一个隐藏窗口:
      namedWindow("test", WINDOW_AUTOSIZE);
    • 这个窗口不会显示在屏幕上,但确保了Gui主线程的存在,从而允许cv::addText()正常工作。
  • 理解渲染机制

    • OpenCV基于Qt进行GUI渲染,因此需要Gui主线程来执行绘图操作。这是为了确保跨平台的兼容性和稳定性。
    • 即使只需要在后台处理图像,OpenCV依然需要一个有效的Gui主线程来支持渲染功能。
  • 优化和调试

    • 确保所有依赖的库(包括Qt和OpenCV)都已正确编译和链接。
    • 检查程序输出,确保没有错误信息,并确认生成的图像包含预期的中文字符。
  • 通过以上步骤,可以成功在OpenCV中渲染中文字符。虽然这要求编译时选择特定选项,并且可能需要处理窗口的创建,但这是实现支持UTF-8字符渲染的常规方法。

    转载地址:http://zlsfk.baihongyu.com/

    你可能感兴趣的文章
    Openstack的HA解决方案【替换原有的dashboard】
    查看>>
    OpenStack的基本概念与架构详解
    查看>>
    Openstack的视频学习
    查看>>
    OpenStack自动化安装部署实战(附OpenStack实验环境)
    查看>>
    openstack虚拟机迁移live-migration中libvirt配置
    查看>>
    OpenStack项目管理实战
    查看>>
    OpenStreetMap初探(一)——了解OpenStreetMap
    查看>>
    openSUSE 13.1 Milestone 2 发布
    查看>>
    openSUSE推出独立 GUI 包管理工具:YQPkg,简化了整个软件包管理流程
    查看>>
    OpenVSwtich(OVS)Vlan间路由实战 附实验环境
    查看>>
    Openwrt LuCI模块练习详细步骤
    查看>>
    OpenWrt固件编译刷机完全总结
    查看>>
    Open××× for Linux搭建之二
    查看>>
    Open×××有线网络时使用正常,无线网络时使用报错的解决方案
    查看>>
    Operation not supported on read-only collection 的解决方法 - [Windows Phone开发技巧系列1]
    查看>>
    Operations Manager 2007 R2系列之仪表板(多)视图
    查看>>
    operator new 与 operator delete
    查看>>
    operator() error
    查看>>
    OPPO K3在哪里打开USB调试模式的完美方法
    查看>>
    Optional类:避免NullPointerException
    查看>>