OpenCv не может обнаружить камеру, в то время как Qt может

Я использую Qt 5.11 в Windows 10 и Opencv 3.2.0.

Я пытаюсь сделать простое приложение, которое может обнаружить камеру, отобразить в QLabel и записать ее. Проблема в том, что когда я использую opencv, чтобы обнаружить встроенную веб-камеру и отобразить ее, она работает нормально. Когда я пытаюсь подключить микроскопическую камеру OP TV10 HD ссылка для камеры , opencv выдает вывод в виде черного экрана даже после установки драйверов для камеры. Код для записи еще не написан, так как я застрял на части дисплея.

mainwindow.cpp

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

QActionGroup *videoDevicesGroup = new QActionGroup(this);
videoDevicesGroup->setExclusive(true);
foreach (const QCameraInfo &cameraInfo, QCameraInfo::availableCameras())
{
QAction *videoDeviceAction = new QAction(cameraInfo.description(), videoDevicesGroup);
videoDeviceAction->setCheckable(true);
videoDeviceAction->setData(QVariant::fromValue(cameraInfo));
if (cameraInfo == QCameraInfo::defaultCamera())
videoDeviceAction->setChecked(true);
ui->comboBox_listDevices->addItem(cameraInfo.description());
}
connect(ui->comboBox_listDevices, SIGNAL(currentIndexChanged(int)), this, SLOT(comboBoxIndexChanged(int)));
}

void MainWindow::comboBoxIndexChanged(int camIndex)
{
disconnect(videoTimer, SIGNAL(timeout()), this, SLOT(initializeCam()));
videoTimer->stop();

startCam(camIndex);
}void MainWindow::startCam(int camIndex)
{
m_videoCapture = new VideoCapture(camIndex);
videoTimer = new QTimer;
connect(videoTimer, SIGNAL(timeout()), this, SLOT(initializeCam()));
videoTimer->start();

//to set the video output as per the size of the display widget
dWidth = m_videoCapture->get(CV_CAP_PROP_FRAME_WIDTH);
dHeight = m_videoCapture->get(CV_CAP_PROP_FRAME_HEIGHT);
}

void MainWindow::initializeCam()
{
Mat frame;

bool bSuccess = m_videoCapture->read(frame);
if(!bSuccess)
qDebug()<<"Cannot read a frame from video file";

QImage qimg = QImage((uchar*)frame.data, frame.cols, frame.rows, frame.step, QImage::Format_RGB888);
qimg = qimg.rgbSwapped();
ui->label->setPixmap(QPixmap::fromImage(qimg).scaled(ui->label->size(), Qt::KeepAspectRatio, Qt::FastTransformation));
}

С другой стороны, без использования opencv, когда я пытаюсь использовать встроенный класс Qt QCamera и QCameraViewfinder для обнаружения и отображения вывода камеры, он отлично работает для обеих камер, но QMediaRecorder не работает в Windows для записи видео, поэтому я был использование opencv для отображения и записи видео для вышеупомянутых камер. Код, когда встроенный класс Qt используется для обнаружения и отображения

mainwindow.cpp

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

QActionGroup *videoDevicesGroup = new QActionGroup(this);
videoDevicesGroup->setExclusive(true);
foreach (const QCameraInfo &cameraInfo, QCameraInfo::availableCameras())
{
QAction *videoDeviceAction = new QAction(cameraInfo.description(), videoDevicesGroup);
videoDeviceAction->setCheckable(true);
videoDeviceAction->setData(QVariant::fromValue(cameraInfo));
if (cameraInfo == QCameraInfo::defaultCamera())
videoDeviceAction->setChecked(true);
ui->comboBox_listDevices->addItem(cameraInfo.description());
}
connect(ui->comboBox_listDevices, SIGNAL(currentIndexChanged(int)), this, SLOT(comboBoxIndexChanged(int)));

}

void MainWindow::comboBoxIndexChanged(int camIndex)
{
QCameraInfo cameraInfo;
QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
foreach (cameraInfo, cameras)
qDebug()<<cameraInfo.description();
camera = new QCamera(cameraInfo);
viewfinder = new QCameraViewfinder();
camera->setViewfinder(viewfinder);
ui->verticalLayout_display->addWidget(viewfinder);
camera->start();
}

Я получаю два сообщения об ошибке в выводе приложения при использовании микроскопической камеры:

Failed to get the video control
failed to find the video proc amp

Может кто-нибудь помочь мне решить проблему черного экрана с помощью openCV или помочь мне в записи видео с использованием встроенного класса Qt QCamera и QCameraViewfinder на Windows 10?

Спасибо за ваше время и знания.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]