m
melnik1014. Dezember 2018 06:20

Как считать шестнадцатеричный файл формата bt8

Как считать шестнадцатеричный файл формата bt8 в qt и использовать его для отображения в QGraphicsView?

размер файла 16МБ. . Это файл одного обзора радиолокационного изображения, необходимо отрисовать его в QGraphicsView.

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

17
Evgenii Legotckoi
  • 14. Dezember 2018 06:32

Добрый день, наверное.

У вас есть информация о структуре данных файлов формата bt8? Я, например, впервые слышу об этом формате.

А так, считываете файл в QByteArray и разбираете его побайтно или пачками байт, расшифровывая, что значит тот или иной байт или группа байтов.

    m
    • 14. Dezember 2018 07:57

    Извините, добрый день. Примерно представляю структуру этого файла. 4105 байт соответствуют одной линейке. Линеек таких 1024. В итоге они формируют изображение. То есть необходимо отрисовывать линию с разной яркостью (разбитую на 4105) отсчетов.
    Думаю создать двумерный массив, с этими 16-ричными значениями. Или их необходимо переводить в 10-ричную систему для изменения яркости ?

      Evgenii Legotckoi
      • 14. Dezember 2018 08:16

      Примерно , это в данном случае никак, к сожалению. У вас есть информация о том, что значит каждый байт в этом файле?

      Например в строках от 0000:0000 до 0000:0070 очевидно, какая-то служебная информация о самом файле. Наверняка где-то в конце есть и проверочная информация. Возможно, что даже контрольная сумма. Также каждый байт не обязательно будет означать яркость, возможно, что даже цвет, а рядом с ним яркость.

      У вас имеется какая-нибудь номенклатура на данный стандарт файла?

        m
        • 14. Dezember 2018 08:35

        Да, первые 64 байта это служебная информация.

        На данный момент нет никакой номенклатуры. Постараюсь достать на днях.

          Evgenii Legotckoi
          • 14. Dezember 2018 08:50
          • (bearbeitet)

          Постарайтесь достать.

          По сути ничего сложного в считывании подобного файла быть не должно, можно просто считывать поблочно всю нужную информацию.

          Я что-то подобное делал уже, но делал запись, но без понимания того, как устроен сам файл - это же будет не считывание, а реверс-инжениринг, что несколько различные по сложности задачи, примерно на порядок. Если у вас есть возможность достать описание формирования структуры, то задача значительной упростится, потому, что всё остальное уже будет рутиной. Можно будет просто подготовить QPixmap и зарисовать его в цикле всеми этими данными в самом простом варианте.

            m
            • 14. Dezember 2018 11:26

            Я проанализировал этот файл и нашел последовательность. Это сиганл, который програли через аналого-цифровой преобразователь. И могу объяснить как он устроен. Могу ли я работать с этим файлом прямо через отладчик? А то я экспортировал это в текстовый файл(его часть) и это не очень удобно.

              Алексей Внуков
              • 14. Dezember 2018 17:19
              • (bearbeitet)

              А не пробовали данные, в том виде как получаете, сразу пихнуть в QPixmap? Как то была задача вытягивать изображение в битмапе по адресу в памяти, долго крутил чтобы первый ряд байтов совпал и вывело правильное изображение, в результате стандартный конструктор оказалось сам все правильно определял и рисовал

              п.с. могу поискать проект и выложить варианты с которыми получалось собрать картинку

                m
                • 15. Dezember 2018 01:32
                • (bearbeitet)

                Можете скинуть пожалуйста, может будет какой-то результат с этого. Мне необходимо его вывести на экран, а затем влиять на него различными режимами. На GraphicsView я запускаю рандомные цели и измеряю их координаты (полярные координаты). А хотелось наложить реальную обстановку.

                  Evgenii Legotckoi
                  • 15. Dezember 2018 04:51

                  Не пробовал такого, получится, расскажете? ))

                  Это сигнал, который прогнали через аналого-цифровой преобразователь

                  Тогда нужно знать, какие уровни там были и координаты точек.

                    m
                    • 15. Dezember 2018 05:17

                    Евгений , я считал сигнал и забил данные в массив от одной линейки. Как мне нарисовать линию разной яркости по этим уровням? Всего 4096 отрезков. Затем хочу нарисовать 4096 линий в круг различной яркости и получится изображение.

                      Evgenii Legotckoi
                      • 15. Dezember 2018 05:19

                      если честно, я даже не знаю, что за график вы используете, вы хотите разные уровни этого графика показать?

                        m
                        • 15. Dezember 2018 06:22

                        Определенному уровню напряжения соответствует яркость точки. 255 - соотвествует ярко-желтому цвету, в районе 120 к черному. Необходимо отрисовать эти линии на GraphicsView. Сейчас начал это делать, на сцену кидаю drawEllipse в разных координатах, но у меня линия делиться на 4096, а в graphicsview заходит максимум 500, все зависит от пикселей в экране. Как мне это этого можно уйти?

                          Evgenii Legotckoi
                          • 15. Dezember 2018 06:28
                          • Die Antwort wurde als Lösung markiert.

                          но у меня линия делиться на 4096, а в graphicsview заходит максимум 500, все зависит от пикселей в экране. Как мне это этого можно уйти?

                          4096/500~= 9

                          Только так, относительным делением,
                          а потом показываете точки с этим шагом. либо просто делить 4096 на 9 и отрисовывать всё с перекрытием.

                            m
                            • 15. Dezember 2018 07:17
                            • (bearbeitet)

                            Я сделал, поделил расстояние от центра до края на 4096 и с этим шагом рисовал точки. Я думал, что точку можно рисовать в целочисленной координате. В итоге все нормально,теперь хочу сделать нарисованную линию отдельным классом qGraphicsItem и добавлять их в массив,затем поворачивать их на сцене

                              m
                              • 17. Dezember 2018 12:47

                              Подскажите пожалуйста. Возникла друга пооблема.. Создал qGraphicsItem, который состоит из 4096 эллипсов, получилась линия разной яркости. Затем решил создать полное изображение, посредством добавления этих объектов повернутых на определенный угол. При создании сотого объекта и далее , программа начинает сильно тормозить... Как эту проблему можно решить ?

                                Evgenii Legotckoi
                                • 17. Dezember 2018 12:55

                                Просчитывать перекрытие точек и не отрисовывать те точки, которые перекрываются другими.

                                У вас их просто слишком много, нужно смотреть, какие можно не отрисовывать без потери информативности графика.

                                  m
                                  • 17. Dezember 2018 14:03

                                  Спасибо, попробую!

                                    Kommentare

                                    Nur autorisierte Benutzer können Kommentare posten.
                                    Bitte Anmelden oder Registrieren
                                    Letzte Kommentare
                                    A
                                    ALO1ZE19. Oktober 2024 08:19
                                    Fb3-Dateileser auf Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                                    ИМ
                                    Игорь Максимов5. Oktober 2024 07:51
                                    Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                                    d
                                    dblas55. Juli 2024 11:02
                                    QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                                    k
                                    kmssr8. Februar 2024 18:43
                                    Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                                    Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                                    Jetzt im Forum diskutieren
                                    J
                                    JacobFib17. Oktober 2024 03:27
                                    добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
                                    JW
                                    Jhon Wick1. Oktober 2024 15:52
                                    Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
                                    КГ
                                    Кирилл Гусарев27. September 2024 09:09
                                    Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
                                    F
                                    Fynjy22. Juli 2024 04:15
                                    при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

                                    Folgen Sie uns in sozialen Netzwerken