Docent
Docent21 ноября 2017 г. 8:39

Видео на сцене QGraphicsScene, как правильно сделать?

Ситуация такая: имеется область в памяти в которую пишутся кадры с камеры. Каким наиболее оптимальным образом отобразить их на сцене. У меня это реализовано таким образом, но подозреваю что можно не перерисовывать каждый раз при получении кадра:

Scene = new QGraphicsScene(this);
bgItem.setPixmap(QPixmap::fromImage(TestFrame)); // QGraphicsPixmapItem
Scene->addItem(&bgItem);
ui->graphicsView_Main->setScene(Scene); // QGraphicsView //... // Каждый раз при получении нового кадра: QImage Frame=QImage(m_pMap, Width, Height, QImage::Format_Grayscale8); bgItem.setPixmap(QPixmap::fromImage(Frame)); // m_pMap - буфер для для отображения кадра
Видео выступает в качестве некоторого фона на сцене.
По поводу камеры - весьма специфичная (made in Russia), в системе определяется как камера, но работать с QCamera совсем не желает, имеются драйвера и библиотека от разработчика.
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

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

1
Evgenii Legotckoi
  • 22 ноября 2017 г. 2:44

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

В данном конкретном случае вы можете использовать OpenGL для ускорения отрисовки, например используя QOpenGLWidget в качестве viewport . Для этого можно использовать метод setViewport(QWidget*).

ui->graphicsView_Main->setViewport(new QOpenGLWidget(this));
Если не ошибаюсь, можно делать частичную перерисовку, но это уже относится к декодированию. Некоторые кодеки (H.264, к примеру) посылают разницу между кадрами, но в данном случае недостаточно формировать фрейм и закидывать его через QPixmap на графическую сцену. Как вариант, вохможно стоит наследоваться от QOpenGLWidget и переопределить его метод paint(), и там уже попиксельно отрисовывать... Но если учесть средства Qt, то это тоже будет выливаться в использование QPixmap и формирование фреймов, так что всё равно может прийти к использованию покадровой отрисовки. Если не будете напрямую декодировать информацию и опять же попиксельно производить отрисовку.

У меня есть ещё мысль, порекомендовать вам использовать QVideoWidget.
Там используется класс QVideoFrame для каждого фрейма, которые получаются из QImage. Думаю, что это будет более оптимизированный вариант работы с покадровой отрисовкой. посмотрите в сторону использования этого функционала Qt.

    Комментарии

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

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

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

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

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

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

    • Результат:20баллов,
    • Очки рейтинга-10
    Последние комментарии
    i
    innorwall14 ноября 2024 г. 19:42
    Как Копировать Файлы в Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
    i
    innorwall14 ноября 2024 г. 17: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 г. 12:05
    EVILEG-CORE. Использование Google reCAPTCHA 2001; 98 29 34 priligy buy
    i
    innorwall14 ноября 2024 г. 12:00
    PyQt5 - Урок 007. Работаем с QML QtQuick (Сигналы и слоты) priligy 30mg Am J Obstet Gynecol 171 1488 505
    i
    innorwall14 ноября 2024 г. 10:54
    Django - Урок 003. Модель, шаблон и представление в Django Hair follicles are believed to produce approximately 20 individual hair shafts over the life of the follicle as the follicle progresses through cycles of hair production, shedding ejection, invo…
    Сейчас обсуждают на форуме
    i
    innorwall14 ноября 2024 г. 11:39
    добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
    i
    innorwall11 ноября 2024 г. 18: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 г. 16:10
    Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
    ИМ
    Игорь Максимов3 октября 2024 г. 11:05
    Реализация навигации по разделам Спасибо Евгений!

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