1. 首页
  2. 移动开发
  3. 其他
  4. OpenCV在Ubuntu上显示中文

OpenCV在Ubuntu上显示中文

上传者: 2025-05-30 12:04:34上传 ZIP文件 4.73MB 热度 3次

Ubuntu 上搞图像,C++配 OpenCV 挺常见的,平时用putText()写英文没啥问题,一写中文就懵了——乱码一片。这事其实蛮好的,关键在于字体。只要装上支持中文的字体,比如fonts-wqy-microhei,在程序里指定字体路径,就能愉快写“你好,世界”了。

OpenCV 默认只认自己那几套英文字体,啥FONT_HERSHEY_SIMPLEXFONT_HERSHEY_COMPLEX,通通不支持中文。所以你得换个思路,用freetype模块,直接读系统字体文件,灵活又好用。

代码不复杂,大致流程就是:读图加载字体写入文字保存图片。就这几步,熟了之后分分钟搞定。下面这段就是个简单范例:

#include <opencv2/opencv.hpp>
#include <opencv2/freetype.hpp>
using namespace cv;
using namespace std;

int main() { Mat img = imread("image.jpg"); Ptr<freetype::FreeType2> ft2 = freetype::createFreeType2(); ft2->loadFontData("/usr/share/fonts/truetype/wqy/wqy-microhei.ttc", 0); ft2->putText(img, "你好,世界", Point(50, 50), 30, Scalar(255,255,255), -1, LINE_AA, true); imwrite("output.jpg", img); return 0; }

注意路径别写错,字体名对上就行了。如果你想找更多字体,也可以看看这些资源,opencv 为图像添加中文字体这篇就还不错,里面提到不少中文字体的适配方式。

嗯,总结一下,如果你在 Ubuntu 上搞 OpenCV,又想加点汉字进去,不用折腾系统配置,直接上freetype模块+中文字体就行。操作简单,效果也稳。如果你项目有定制需求,可以封装成一个小工具类,复用方便,效率也高。

下载地址
用户评论