0

「 vlc-qt」を「 opencv」に接続しようとしています。VlcInstanceVlcMediaを使用して IP カメラを読み取っています。

私の知る限り、OpenCV が機能するには、ビデオを Mat 形式にする必要があります。

videoCapture cap;
Mat frame ;
cap >> frame ; 

しかし、私はそれをVlcMedia形式で持っています。それを Mat 形式 (またはビデオキャプチャのソースとして) に変換し、VlcMediaPlayer で表示できるように VlcMedia に変換する方法はありますか。

高速である必要があります(実際にはリアルタイムで高速です:D)。

これは私のコードです (私は Visual Studio で Qt を使用しています):

私のヘッダーファイル:

#ifndef QT_VLC_OPENCV1_H
#define QT_VLC_OPENCV1_H

#include <QtWidgets/QMainWindow>
#include "ui_qt_vlc_opencv1.h"

#include <VLCQtCore\Instance.h>
#include <VLCQtCore\Media.h>
#include <VLCQtCore\MediaPlayer.h>

class qt_vlc_opencv1 : public QMainWindow
{
    Q_OBJECT

public:
    qt_vlc_opencv1(QWidget *parent = 0);
    ~qt_vlc_opencv1();
private slots:
    void on_btnOpenFile_clicked();

private:
    Ui::qt_vlc_opencv1Class ui;

    VlcInstance *_instance;
    VlcMedia *_media;
    VlcMediaPlayer *_player;
};

#endif // QT_VLC_OPENCV1_H

そして私のcppファイル:

#include "qt_vlc_opencv1.h"

#include <VLCQtCore\Common.h>
#include <qinputdialog.h>

#include <opencv2/highgui/highgui.hpp>
#include <cv.h>
using namespace cv;

qt_vlc_opencv1::qt_vlc_opencv1(QWidget *parent)
: QMainWindow(parent), _media(0)
{
    ui.setupUi(this);

    _instance = new VlcInstance(VlcCommon::args(), this);
    _player = new VlcMediaPlayer(_instance);
    _player->setVideoWidget(ui.video);

    ui.video->setMediaPlayer(_player);
}

qt_vlc_opencv1::~qt_vlc_opencv1()
{
    delete _player;
    delete _media;
    delete _instance;
}

void qt_vlc_opencv1::on_btnOpenFile_clicked()
{
    QString file = QInputDialog::getText(this,tr("Open File"),tr("Enter a file path or a Url"));
    if (file.isEmpty())
        return;

    _media = new VlcMedia(file, true, _instance);
    _player->open(_media);
}
4

1 に答える 1