ficusa97
ficusa9730 июля 2019 г. 4:28

Qt Creator блоки изображения в видео

Здравстуйте, я - новичок в Qt. Мне необходимо выделять блоки изображения размером 16х16 на видео. Не с помощью мыши. В программу подается видеофайл формата ".rgb24". На выходе картинки размерами 16х16 того же формата. Подскажите, пожалуйста, как это можно сделать.

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

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

7
Evgenii Legotckoi
  • 30 июля 2019 г. 4:44

Добрый день. А нельзя поточнее? видео будет двигаться в этот момент?

Мне приходит на ум только один способ на данный момент - это наследоваться от QVideoWidget и переопределять методы paint, mousePressEvent, mouseMoveEvent, mouseReleaseEvent. И с помощью них пытаться отрисовывать поверх видео блоки выделения или что там хотите, впрочем в вопросе очень много неизвестного и большой недостаток информации.

    ficusa97
    • 30 июля 2019 г. 8:04

    Здравствуйте. Не с помощью мыши. В программу подается видеофайл формата ".rgb24". На выходе картинки размерами 16х16 того же формата.

      Evgenii Legotckoi
      • 30 июля 2019 г. 8:06
      • (ред.)

      Ну с форматом более менее понятно, а что с картинками формата 16x16. Что это означает? У меня предположение, что имеется например изображение 64x64 на входе, а на выходе это будет 16 изображений 16x16, так? То есть как мозаика.

        ficusa97
        • 30 июля 2019 г. 8:29

        Да, так. Имеется в виду что сохранить их в формате ".rgb24".

          Evgenii Legotckoi
          • 31 июля 2019 г. 3:39

          Что касается нарезки самого изображения, то это можно сделать с помощью класса QPixmap и его метода copy.

          QVector<QPixmap> clippedPixmaps;
          QPixmap originalPixmap;
          int originalWidth = 64;
          int originalHeight = 64;
          
          for (int i = 0; i < (originalWidth / 16); ++i)
          {
              for (int j = 0; j < (originalHeight / 16); ++j)
              {
                  clippedPixmaps.push_back(originalPixmap.copy(i * 16, j * 16, 16, 16); 
              }
          }
          

          Другая проблема, как в потоке забирать кадры из видео. Лично я с такой задачей на Qt не работал. Вернее работал, но это было с подключением сторонней библиотеки, которая вам не нужна, и там была совершенно другая задача, там было перекодирование. Надо смотреть документацию на Qt Multimedia. Есть QVideoWidget, в нём можно без проблем открывать популярные форматы. По идее можно забирать и сам поток.

            ficusa97
            • 31 июля 2019 г. 4:41

            Спасибо, за совет. Попробую разобраться с потоком кадров.

              Evgenii Legotckoi
              • 31 июля 2019 г. 5:24

              Вот на этой странице документации Qt . Есть пример по написанию своего плеера воспроизведения в Qt через QAbstractVideoSurface.

              class MyVideoProducer : public QObject
              {
                  Q_OBJECT
                  Q_PROPERTY(QAbstractVideoSurface *videoSurface READ videoSurface WRITE setVideoSurface)
              
              public:
                  QAbstractVideoSurface* videoSurface() const { return m_surface; }
              
                  void setVideoSurface(QAbstractVideoSurface *surface)
                  {
                      if (m_surface != surface && m_surface && m_surface->isActive()) {
                          m_surface->stop();
                      }
                      m_surface = surface;
                      if (m_surface)
                          m_surface->start(m_format);
                  }
              
                  // ...
              
              public slots:
                  void onNewVideoContentReceived(const QVideoFrame &frame)
                  {
                      if (m_surface)
                          m_surface->present(frame);
                  }
              
              private:
                  QAbstractVideoSurface *m_surface;
                  QVideoSurfaceFormat m_format;
              };
              

              Думаю, что QVideoFrame можно преобразовать в QPixmap. Другой вопрос, чтобы скорость видеопотока была достаточно большой, а не со скоростью нормального воспроизведения.

                Комментарии

                Только авторизованные пользователи могут публиковать комментарии.
                Пожалуйста, авторизуйтесь или зарегистрируйтесь
                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
                Последние комментарии
                i
                innorwall15 ноября 2024 г. 13:27
                Релиз утилиты развертывания С++/Qt и QML приложений CQtDeployer v1.4.0 (Binary Box) optionally substituted alkoxy, optionally substituted alkenyloxy, optionally substituted alkynyloxy, optionally substituted aryloxy, OCH, OC H, OC H, OC H, OC H, OC H, OC H, O C CH, OCH CH OH, O…
                i
                innorwall15 ноября 2024 г. 8:26
                Qt/C++ - Урок 031. QCustomPlot - строим график по времени buy generic priligy We can just chat, and we will not lose too much time anyway
                i
                innorwall15 ноября 2024 г. 6:03
                Qt/C++ - Урок 060. Настройка внешнего вида приложения в рантайме I didnt have an issue work colors priligy dapoxetine 60mg revia cost uk August 3, 2022 Reply
                i
                innorwall14 ноября 2024 г. 22:42
                Как Копировать Файлы в Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
                Сейчас обсуждают на форуме
                i
                innorwall14 ноября 2024 г. 14:39
                добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
                i
                innorwall11 ноября 2024 г. 21: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 г. 19:10
                Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
                ИМ
                Игорь Максимов3 октября 2024 г. 14:05
                Реализация навигации по разделам Спасибо Евгений!

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