QT C++ 解析labelme中json 的imagedata转为图片
时间: 2024-03-24 17:39:49 浏览: 127
C++ 实现json形式的Socket传输图片
4星 · 用户满意度95%
在QT C++中,可以使用Qt的QByteArray和QImage来解析labelme中的json文件中的imagedata并将其转换为图片。以下是示例代码:
```c++
#include <QCoreApplication>
#include <QByteArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QFile>
#include <QImage>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 读取json文件
QFile jsonFile("path/to/your/json/file.json");
if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text))
{
return -1;
}
QByteArray jsonData = jsonFile.readAll();
jsonFile.close();
// 解析json文件
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData);
if (jsonDoc.isNull())
{
return -1;
}
QJsonObject jsonObj = jsonDoc.object();
QString imageData = jsonObj.value("imageData").toString();
// 将imagedata转为QImage
QByteArray imageDataBytes = QByteArray::fromBase64(imageData.toUtf8());
QImage img = QImage::fromData(imageDataBytes);
// 保存图片
QString savePath = "path/to/your/save/image.png";
img.save(savePath);
return a.exec();
}
```
其中,`jsonFile`为json文件的路径,`imageData`为json文件中的imagedata,`savePath`为保存图片的路径。需要注意的是,在QT C++中,需要包含`QtCore`和`QtGui`这两个模块。
阅读全文