m
melnik1014 грудня 2018 р. 06:20

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

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

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

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

17
Evgenii Legotckoi
  • 14 грудня 2018 р. 06:32

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

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

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

    m
    • 14 грудня 2018 р. 07:57

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

      Evgenii Legotckoi
      • 14 грудня 2018 р. 08:16

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

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

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

        m
        • 14 грудня 2018 р. 08:35

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

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

          Evgenii Legotckoi
          • 14 грудня 2018 р. 08:50
          • (відредаговано)

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

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

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

            m
            • 14 грудня 2018 р. 11:26

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

              Алексей Внуков
              • 14 грудня 2018 р. 17:19
              • (відредаговано)

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

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

                m
                • 15 грудня 2018 р. 01:32
                • (відредаговано)

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

                  Evgenii Legotckoi
                  • 15 грудня 2018 р. 04:51

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

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

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

                    m
                    • 15 грудня 2018 р. 05:17

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

                      Evgenii Legotckoi
                      • 15 грудня 2018 р. 05:19

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

                        m
                        • 15 грудня 2018 р. 06:22

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

                          Evgenii Legotckoi
                          • 15 грудня 2018 р. 06:28
                          • Відповідь була позначена як рішення.

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

                          4096/500~= 9

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

                            m
                            • 15 грудня 2018 р. 07:17
                            • (відредаговано)

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

                              m
                              • 17 грудня 2018 р. 12:47

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

                                Evgenii Legotckoi
                                • 17 грудня 2018 р. 12:55

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

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

                                  m
                                  • 17 грудня 2018 р. 14:03

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

                                    Коментарі

                                    Only authorized users can post comments.
                                    Please, Log in or Sign up
                                    AD

                                    C++ - Тест 004. Указатели, Массивы и Циклы

                                    • Результат:50бали,
                                    • Рейтинг балів-4
                                    m
                                    • molni99
                                    • 26 жовтня 2024 р. 11:37

                                    C++ - Тест 004. Указатели, Массивы и Циклы

                                    • Результат:80бали,
                                    • Рейтинг балів4
                                    m
                                    • molni99
                                    • 26 жовтня 2024 р. 11:29

                                    C++ - Тест 004. Указатели, Массивы и Циклы

                                    • Результат:20бали,
                                    • Рейтинг балів-10
                                    Останні коментарі
                                    ИМ
                                    Игорь Максимов22 листопада 2024 р. 22:51
                                    Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                                    Evgenii Legotckoi
                                    Evgenii Legotckoi01 листопада 2024 р. 00:37
                                    Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                                    A
                                    ALO1ZE19 жовтня 2024 р. 18:19
                                    Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                                    ИМ
                                    Игорь Максимов05 жовтня 2024 р. 17:51
                                    Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                                    d
                                    dblas505 липня 2024 р. 21:02
                                    QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                                    Тепер обговоріть на форумі
                                    Evgenii Legotckoi
                                    Evgenii Legotckoi25 червня 2024 р. 01:11
                                    добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                                    t
                                    tonypeachey115 листопада 2024 р. 17:04
                                    google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
                                    NSProject
                                    NSProject04 червня 2022 р. 13:49
                                    Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
                                    9
                                    9Anonim25 жовтня 2024 р. 19:10
                                    Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                                    Слідкуйте за нами в соціальних мережах