Как вызвать функцию для каждого полученного видеокадра в Qt - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь вызвать функцию для каждого видеокадра с камеры моего ноутбука. Вот что я попробовал:

mainwindow.h

#include <QMainWindow>
#include <QVideoProbe>
#include <QCamera>
#include <QMediaRecorder>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void processFrame(const QVideoFrame &frame);

private:
    Ui::MainWindow *ui;
    QVideoProbe *probe;
    QCamera* camera;
    QMediaRecorder* recorder;
};

mainwindow. cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    probe = new QVideoProbe;
    camera = new QCamera;
    recorder = new QMediaRecorder(camera);

    connect(probe, SIGNAL(videoFrameProbed(QVideoFrame)), this, SLOT(processFrame(QVideoFrame)));

    probe->setSource(recorder);

    camera->setCaptureMode(QCamera::CaptureVideo);
    camera->start();
    recorder->record();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::processFrame(const QVideoFrame &frame){
    //do something
}

Я хотел бы, чтобы функция processFrame вызывалась каждый раз, когда новый видеокадр обнаружен пробным сигналом. Код выполняется без ошибок, но, кажется, не вызывается processFrame (я обновляю текст метки в функции processFrame просто для проверки).

probe-> setSource (Recorder) возвращает значение false, которое, согласно в документации qt для класса QVideoProbe означает, что экземпляр медиа-рекордера не поддерживает мониторинг видео. Я не уверен, означает ли это, что мое оборудование не поддерживается (встроенная веб-камера на windows 10), или объекты мультимедиа / камеры не были правильно настроены

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...