Я пытаюсь вызвать функцию для каждого видеокадра с камеры моего ноутбука. Вот что я попробовал:
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), или объекты мультимедиа / камеры не были правильно настроены