C++ Opencv putText中文乱码
时间: 2025-04-23 08:43:17 浏览: 41
### C++ OpenCV `putText` 函数显示中文时出现乱码的解决方案
当使用OpenCV中的`putText`函数尝试绘制中文字符到图像上时,可能会遇到乱码问题。这是因为默认情况下,`putText`并不支持多字节编码的文字,比如汉字。
为了处理这个问题,可以采用自定义的方式加载字体并渲染文字。一种常见的做法是利用FreeType库来解析TTF(TrueType Font)文件,并将其应用到图片上的指定位置[^1]。
另一种更为简便的方法是在项目中引入专门针对此情况设计的支持中文显示的功能模块——例如,在给定的信息里提到过可以通过包含特定头文件`putTextCN.h`以及调用其中封装好的接口`putTextZH()`来进行操作[^2]:
```cpp
#include "opencv2/opencv.hpp"
#include "putTextCN.h"
using namespace cv;
int main() {
// 加载测试图像
Mat img = imread("test.jpg");
// 定义要写入的内容(宽字符字符串)
wchar_t* msg = L"我是一个粉刷匠,\n粉刷本领强.";
// 调用putTextZH函数向图像添加中文文本
putTextZH(img, msg, Point(50, 50), Scalar(255, 0, 0), 10, "微软雅黑", false, false);
imshow("Image with Chinese Text", img);
waitKey(0);
return 0;
}
```
上述代码片段展示了如何通过调用`putTextZH`函数实现将带有换行符的中文诗句正确地呈现在读取的一张名为“test.jpg”的照片之上;同时指定了文字的颜色为蓝色、字号大小为10px,并选择了系统中存在的“微软雅黑”作为目标字体样式。
阅读全文
相关推荐













