m
melnik10Жел. 14, 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, 5: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, 2:03 Т.Қ.

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

                                    Пікірлер

                                    Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
                                    Кіріңіз немесе Тіркеліңіз
                                    Г

                                    C++ - Тест 001. Первая программа и типы данных

                                    • Нәтиже:66ұпай,
                                    • Бағалау ұпайлары-1
                                    t

                                    C++ - Тест 001. Первая программа и типы данных

                                    • Нәтиже:33ұпай,
                                    • Бағалау ұпайлары-10
                                    t

                                    Qt - Тест 001. Сигналы и слоты

                                    • Нәтиже:52ұпай,
                                    • Бағалау ұпайлары-4
                                    Соңғы пікірлер
                                    G
                                    GoattRockҚыр. 3, 2024, 11:50 Т.Қ.
                                    Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
                                    d
                                    dblas5Шілде 5, 2024, 9:02 Т.Қ.
                                    QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                                    k
                                    kmssrАқп. 9, 2024, 5:43 Т.Ж.
                                    Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                                    АК
                                    Анатолий КононенкоАқп. 5, 2024, 12:50 Т.Қ.
                                    Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                                    Енді форумда талқылаңыз
                                    Evgenii Legotckoi
                                    Evgenii LegotckoiМаусым 25, 2024, 1:11 Т.Ж.
                                    добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                                    F
                                    FynjyШілде 22, 2024, 2:15 Т.Қ.
                                    при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
                                    BlinCT
                                    BlinCTМаусым 25, 2024, 11 Т.Ж.
                                    Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
                                    BlinCT
                                    BlinCTМамыр 5, 2024, 3:46 Т.Қ.
                                    Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
                                    Evgenii Legotckoi
                                    Evgenii LegotckoiМамыр 3, 2024, 12:07 Т.Ж.
                                    Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

                                    Бізді әлеуметтік желілерде бақылаңыз