QT5.4+vs2010解决 opencv图像上绘制文字中文乱码问题
时间: 2023-10-03 13:02:22 浏览: 223
在 Qt5.4+vs2010 中使用 OpenCV 绘制中文字符串时,可以使用 Qt 自带的 QTextCodec 类进行编码转换,避免乱码问题。
下面是一个示例代码:
```
#include <opencv2/opencv.hpp>
#include <QTextCodec>
int main()
{
// 创建一个黑色图像
cv::Mat img = cv::Mat::zeros(100, 200, CV_8UC3);
// 要绘制的中文字符串
QString text = QString::fromUtf8("你好,世界!");
// 将字符串转换为 GB2312 编码
QTextCodec* codec = QTextCodec::codecForName("GB2312");
QByteArray data = codec->fromUnicode(text);
// 在图像上绘制字符串
cv::putText(img, data.constData(), cv::Point(10, 50), cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(0, 0, 255), 2);
// 显示图像
cv::imshow("image", img);
cv::waitKey();
return 0;
}
```
在这个示例代码中,我们使用了 Qt 的 QTextCodec 类将中文字符串转换为 GB2312 编码,然后使用 OpenCV 的 putText 函数在图像上绘制字符串。这样可以避免中文乱码问题。
阅读全文