Member 13957640 Ответов: 1

Как я могу использовать этот код в qt creator


Привет,

Я новичок в использовании qt и хотел бы использовать этот код : Извлечения изображений в формате RAW от компании FLIR формата JPEG в Linux[^]
чтобы сделать графический интерфейс с помощью Qtcreator, но мне это не удалось.

Что я уже пробовал:

I'm at the begining and I don't know how to do, I have just put it in Qt creator : 
#include <iostream>
#include <QProcess>
#include <QDebug>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QFile>

int main(int argc, char** argv)
{
    QString filepath(argv[1]);

    QProcess exiftoolProcess;
    exiftoolProcess.start("exiftool", QStringList() << "-j" << "-b" << filepath);
    if(!exiftoolProcess.waitForFinished(100000))
    {
        qInfo() << "exiftool timed out";
    }

    QByteArray data = exiftoolProcess.readAllStandardOutput();
    QJsonDocument exiftoolDoc = QJsonDocument::fromJson(data);

    QJsonArray dataArray = exiftoolDoc.array();

    QJsonValue value = dataArray[0];

    QJsonObject obj = value.toObject();

    qInfo() << obj.keys();

    int width = obj["RawThermalImageWidth"].toDouble();
    int height = obj["RawThermalImageHeight"].toDouble();

    qInfo() << "Resolution: " << width << "x" << height;

    QString imgBase64Str = obj["RawThermalImage"].toString();
    imgBase64Str.remove(0,7);

    QByteArray image = QByteArray::fromBase64(imgBase64Str.toLocal8Bit());

    qInfo() << image.size();

    QFile file("./output.tif");
    file.open(QIODevice::WriteOnly);
    file.write(image);
    file.close();
}

1 Ответов

Рейтинг:
11

Jochen Arndt

Создайте новый проект (File - New Project) и выберите тип проекта. Для консольных приложений как в фрагменте кода выберите другой проект а потом выбирай Консоль Qt или Простой C++ который является типом показанного кода. Затем вставьте код из статьи в тело созданного файла главный функция.

Этот шаг необходим для создания файла проекта Qt для qmake.про который содержит определения сборки.

Если вы хотите создать приложение Qt GUI, вы должны сначала узнать об этом. Начните с Учебники | Руководство Qt Creator Manual[^]. Создайте графический интерфейс в соответствии с вашими требованиями (здесь, например, предусмотрены элементы управления для выбора входных и выходных файлов) и вставьте код из статьи для выполнения преобразования.

Обратите внимание, что код требует exiftool быть установленным.


Member 13957640

Большое спасибо.
Я только что сделал первый шаг, код уже в прошлом. main.cpp файл.
Но я не знаю, нормально ли это, потому что, когда я пытаюсь бежать, у меня есть это (извините, некоторые части на французском языке...) :

09:29:20: Exécution des étapes pour le projet ExportFLIR...
09:29:20: конфигурация inchangée, étape qmake sautée.
09:29:20: дебют : "/ usr/bin/make"
ССЗ -с-трубой -г -стены -ж -D_REENTRANT -спос -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -я../ExportFLIR -И. -Я../Кварт/5.11.1/gcc_64/включить-я../Кварт/5.11.1/gcc_64/числе/QtWidgets -я../Кварт/5.11.1/gcc_64/числе/QtGui пакет -я../Кварт/5.11.1/gcc_64/числе/необходимости некоторые -И. -isystem в /usr/включать/libdrm -я../Кварт/5.11.1/gcc_64/mkspecs/Линукс-г++ -о. о /
ССЗ: предупреждение: /: вход компоновщика файла неиспользуемые потому, что связывание не делается
г++ -от WL,-путь rpath,/домашний/Максим/Кварт/5.11.1/gcc_64/Либ -о ExportFLIR .о главном.о -Л/домой/Максим/Кварт/5.11.1/gcc_64/либерал-lQt5Widgets -lQt5Gui -lQt5Core -лгл-lpthread
g++: error: .o: такого файла или каталога нет
make: *** [ExportFLIR] Ошибка 1
Makefile:257: рецепт для целевого объекта 'ExportFLIR' не удался
09:29:20: Le processus "/usr/bin/make" s'est terminé avec le code 2.
Erreur lors de la compilation/déploiement du projet ExportFLIR (комплект : Desktop Qt 5.11.1 GCC 64bit)
При выполнении шага "сделать"
09:29:20: Temps écoulé : 00:00.

Jochen Arndt

Ваш qmake.pro файл кажется недействительным.
Он выполняет компилятор C (gcc), передавая "/" в качестве имени исходного файла.
Вместо этого он должен выполнить передачу компилятора C++ (g++) main.cpp-да.

Member 13957640

Спасибо.
У меня есть только это в моем файле .pro :
Шаблон = приложение
QТ = ядро графического интерфейса
greaterThan(QT_MAJOR_VERSION, 4): QT += виджеты
CONFIG += c++11

ИСХОДНЫЙ += \\
main.cpp

Jochen Arndt

Так и должно быть
SOURCES += main.cpp
Обратная косая черта может быть использована для продолжения строки, как в исходных файлах C/C++.
Но тогда это должна быть одна обратная косая черта.

Видишь ли http://doc.qt.io/qt-5/qmake-project-files.html-да.

Member 13957640

хорошо, спасибо за ваш ответ.
Теперь чтобы проверить я нашел файл для exemple "image.jpg" и я поместил в каталог моего проекта Qt в моем компьютере это /home/maxime/ExportFLIR/
Но я не знаю, что мне нужно написать в коде для использования файла "image.jpg-чтобы проверить, работает ли этот код?

Jochen Arndt

Вы должны использовать полный путь к файлу вместо argv[1]:
QString filepath("/home/maxime/ExportFLIR/image.jpg");

В качестве альтернативы выберите файл с помощью QFileDialog.

Обратите внимание также, что код должен быть перемещен позже из main (), когда вы создали графический интерфейс. Затем он должен быть помещен, например, в обработчик кнопки, которая должна запустить преобразование.

Member 13957640

Большое вам спасибо, Йохен Арндт!
Это работает!
Теперь мне нужно время, чтобы научиться создавать графический интерфейс...
Я буду искать учебники.