m
melnik1014 декабря 2018 г. 6:20

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

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

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

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

Вам это нравится? Поделитесь в социальных сетях!

17
Evgenii Legotckoi
  • 14 декабря 2018 г. 6:32

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

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

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

    m
    • 14 декабря 2018 г. 7:57

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

      Evgenii Legotckoi
      • 14 декабря 2018 г. 8:16

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

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

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

        m
        • 14 декабря 2018 г. 8:35

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

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

          Evgenii Legotckoi
          • 14 декабря 2018 г. 8:50
          • (ред.)

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

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

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

            m
            • 14 декабря 2018 г. 11:26

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

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

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

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

                m
                • 15 декабря 2018 г. 1:32
                • (ред.)

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

                  Evgenii Legotckoi
                  • 15 декабря 2018 г. 4:51

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

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

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

                    m
                    • 15 декабря 2018 г. 5:17

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

                      Evgenii Legotckoi
                      • 15 декабря 2018 г. 5:19

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

                        m
                        • 15 декабря 2018 г. 6:22

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

                          Evgenii Legotckoi
                          • 15 декабря 2018 г. 6:28
                          • Ответ был помечен как решение.

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

                          4096/500~= 9

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

                            m
                            • 15 декабря 2018 г. 7:17
                            • (ред.)

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

                              m
                              • 17 декабря 2018 г. 12:47

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

                                Evgenii Legotckoi
                                • 17 декабря 2018 г. 12:55

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

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

                                  m
                                  • 17 декабря 2018 г. 14:03

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

                                    Комментарии

                                    Только авторизованные пользователи могут публиковать комментарии.
                                    Пожалуйста, авторизуйтесь или зарегистрируйтесь
                                    AD

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

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

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

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

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

                                    • Результат:20баллов,
                                    • Очки рейтинга-10
                                    Последние комментарии
                                    i
                                    innorwall14 ноября 2024 г. 21:26
                                    Qt/C++ - Урок 031. QCustomPlot - строим график по времени buy generic priligy We can just chat, and we will not lose too much time anyway
                                    i
                                    innorwall14 ноября 2024 г. 19:03
                                    Qt/C++ - Урок 060. Настройка внешнего вида приложения в рантайме I didnt have an issue work colors priligy dapoxetine 60mg revia cost uk August 3, 2022 Reply
                                    i
                                    innorwall14 ноября 2024 г. 11:42
                                    Как Копировать Файлы в Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
                                    i
                                    innorwall14 ноября 2024 г. 9:09
                                    Qt/C++ - Урок 068. Hello World с использованием системы сборки CMAKE в CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
                                    Сейчас обсуждают на форуме
                                    i
                                    innorwall14 ноября 2024 г. 3:39
                                    добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
                                    i
                                    innorwall11 ноября 2024 г. 10:55
                                    Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
                                    9
                                    9Anonim25 октября 2024 г. 9:10
                                    Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
                                    ИМ
                                    Игорь Максимов3 октября 2024 г. 4:05
                                    Реализация навигации по разделам Спасибо Евгений!

                                    Следите за нами в социальных сетях