Spec-Zone.ru › Qt 5.12

Класс QAbstractVideoFilter

Класс QAbstractVideoFilter представляет собой фильтр, применяемый к кадрам видео, получаемым типом VideoOutput. Подробнее...

Заголовок: #include <QAbstractVideoFilter>
qmake: QT += multimedia
С тех пор: Qt 5.5
Наследует: QObject
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Свойства

  • active : bool
  • 1 свойство унаследовано от QObject

Открытые функции

QAbstractVideoFilter(QObject *parent = nullptr)
virtual QVideoFilterRunnable * createFilterRunnable() = 0
bool isActive() const
void setActive(bool v)
  • 31 открытая функция унаследована от QObject

Сигналы

void activeChanged()
  • 2 сигнала унаследованы от QObject

Статические открытые члены

const QMetaObject staticMetaObject
  • 9 статических открытых членов унаследованы от QObject

Дополнительные унаследованные члены

  • 1 открытый слот унаследован от QObject
  • 9 защищённых функций унаследованы от QObject

Подробное описание

Класс QAbstractVideoFilter представляет собой фильтр, применяемый к кадрам видео, получаемым типом VideoOutput.

QAbstractVideoFilter предоставляет удобный способ для приложений запускать обработку изображений, алгоритмы компьютерного зрения или любые общие преобразования или вычисления на выходе типа VideoOutput, независимо от источника (видео или камера). Благодаря простому интерфейсу, он позволяет приложениям и сторонним разработчикам легко разрабатывать типы QML, которые предоставляют алгоритмы обработки изображений, используя популярные фреймворки, такие как OpenCV. Из-за тесной интеграции с конечными этапами конвейера видео Qt Multimedia возможны ускоренные и, возможно, нулевые копии решений: например, плагин, предоставляющий алгоритмы на основе OpenCL, может использовать межъязыковое взаимодействие OpenCL с OpenGL для использования текстур OpenGL, созданных ускоренным видеодекодером на аппаратном уровне, без дополнительных операций чтения и копирования.

Примечание: QAbstractVideoFilter не всегда является лучшим выбором. Для применения эффектов или преобразований с помощью шейдеров OpenGL к изображению, отображаемому на экране, следует использовать стандартный подход Qt Quick с использованием элементов ShaderEffect в сочетании с VideoOutput. VideoFilter не является заменой этому. Скорее, он ориентирован на выполнение вычислений (которые не обязательно изменяют изображение, отображаемое на экране) и алгоритмов компьютерного зрения, предоставляемых внешними фреймворками.

QAbstractVideoFilter предназначен для наследования. Подклассы затем регистрируются в движке QML, чтобы их можно было использовать как тип QML. Список фильтров назначается типу VideoOutput через его свойство filters.

Один фильтр представляет собой одно преобразование или этап обработки кадра видео. Выход представляет собой изменённый кадр видео, произвольные данные или оба. Например, преобразования изображений приведут к другому изображению, в то время как алгоритм обнаружения объектов на изображении, скорее всего, предоставит список прямоугольников.

Произвольные данные могут быть представлены как свойства подкласса QAbstractVideoFilter и экземпляров QObject или QJSValue, передаваемых в его сигналы. Что именно представляют собой эти свойства и сигналы, зависит от отдельных видеофильтров. Завершение операций может быть указано сигналами. Вычисления, которые не приводят к изменению изображения, пропускают входное изображение, чтобы после них можно было разместить последующие фильтры.

Свойства, заданные в QAbstractVideoFilter, служат входом в вычисление, аналогично тому, как задаются однородные значения в типах ShaderEffect. Изменённые значения свойств используются при обработке следующего кадра видео.

Типичное использование заключается в наследовании от QAbstractVideoFilter и QVideoFilterRunnable:

class MyFilterRunnable : public QVideoFilterRunnable {
public:
    QVideoFrame run(QVideoFrame *input, const QVideoSurfaceFormat &surfaceFormat, RunFlags flags) { ... }
};

class MyFilter : public QAbstractVideoFilter {
public:
    QVideoFilterRunnable *createFilterRunnable() { return new MyFilterRunnable; }
signals:
    void finished(QObject *result);
};

int main(int argc, char **argv) {
    ...
    qmlRegisterType<MyFilter>("my.uri", 1, 0, "MyFilter");
    ...
}

Таким образом, MyFilter доступен из QML:

import my.uri 1.0

Camera {
    id: camera
}
MyFilter {
    id: filter
    // set properties, they can also be animated
    onFinished: console.log("results of the computation: " + result)
}
VideoOutput {
    source: camera
    filters: [ filter ]
    anchors.fill: parent
}

Это также позволяет предоставлять фильтры в QML-плагинах отдельно от приложения.

См. также VideoOutput, Camera, MediaPlayer и QVideoFilterRunnable.

Документация по свойствам

active : bool

Это свойство содержит состояние активности фильтра.

Это true, если фильтр активен, и false в противном случае.

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

Функции доступа:

bool isActive() const
void setActive(bool v)

Сигнал уведомления:

void activeChanged()

Документация по членам-функциям

QAbstractVideoFilter::QAbstractVideoFilter(QObject *parent = nullptr)

Создаёт новый экземпляр QAbstractVideoFilter с родительским объектом parent.

[pure virtual] QVideoFilterRunnable *QAbstractVideoFilter::createFilterRunnable()

Функция-фабрика для создания нового экземпляра подкласса QVideoFilterRunnable, соответствующего этому фильтру.

Эта функция вызывается в потоке, в котором графический интерфейс Qt Quick выполняет отрисовку, с привязанным контекстом OpenGL. Владение возвращаемым экземпляром передаётся: возвращаемый экземпляр будет существовать в потоке отрисовки и будет уничтожен автоматически при необходимости.

Обычно реализации функции просто строят новый экземпляр QVideoFilterRunnable, передавая this в конструктор, поскольку фильтрам для выполнения вычислений необходимо знать связанный с ними экземпляр QAbstractVideoFilter для доступа к динамическим свойствам и, по желанию, для вывода сигналов.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qabstractvideofilter.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API