У меня есть большая проблема, которую я не могу решить самостоятельно. Сам OpenCV отлично работает, но я не могу загружать видео. Вот мой код:Qt 5.2/OpenCV 2.4.8 - Не удается открыть видео файлы через VideoCapture
PRO- Файл
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = videoredux
TEMPLATE = app
INCLUDEPATH += C:/OpenCV/opencv_bin/install/include
LIBS += -LC:\\OpenCV\\opencv_bin\\bin \
libopencv_core248d \
libopencv_highgui248d \
libopencv_imgproc248d \
libopencv_features2d248d \
libopencv_calib3d248d \
libopencv_video248d \
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
и MainWindow Класс:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <iostream>
#include <qdebug.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv/cv.h>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->videoStatusLabel->setText("Kein Video geladen.");
// SIGNALS & SLOTS
QObject::connect(ui->chooseVideoButton,SIGNAL(clicked()),
this,SLOT(chooseVideo()));
QObject::connect(ui->startButton,SIGNAL(clicked()),
this,SLOT(startProcess()));
}
void MainWindow::chooseVideo(){
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Video"), "/home", tr("Video Files (*.avi *.mp4 *.mpeg *.mpg)"));
qDebug() << "Path:" << fileName;
ui->videoStatusLabel->setText(fileName);
}
void MainWindow::startProcess(){
QString videoPath = ui->videoStatusLabel->text();
QFileInfo video(videoPath);
if(video.exists()){
const std::string path = videoPath.toUtf8().constData();
cv::VideoCapture capture(path);
cv::Mat frame;
if(!capture.isOpened()){
qDebug() << "Error, video not loaded";
}
cv::namedWindow("window",1);
while(true)
{
bool success = capture.read(frame);
if(success == false){
break;
}
cv::imshow("window",frame);
cv::waitKey(20);
}
cv::waitKey(0);
}
else{
qDebug() << "Error, File doesn't exist";
}
}
Пути правильно, я перепробовал много различных форматов видео, но он никогда не загружает видео. Я запускаю Qt на компьютере под управлением Windows 8, и у меня есть «K-Lite Codec Pack 10.2.0 Basic» и ffmpeg. Видео воспроизводятся правильно с моими видеоплеерами. Я также попытался скопировать .dll в рабочий каталог, найти opencv dll в каталоге system32 и перестроить OpenCV с помощью mingw на этом компьютере. Я знаю, что у многих людей есть те же проблемы, но ни одно из их предложений не разрешило это. кто-нибудь знает, как решить эту проблему?
спасибо!
Надин
---- UPDATE ---- Я до сих пор не может открывать видео файлы, так что я запрограммировал приложение на системе 64-Bit Windows7. Он работал нормально, но когда я пытаюсь открыть приложение на компьютере под управлением Windows8, он все равно не может открыть файл. Неважно, какие кодеки установлены, поскольку он обычно работает на каждом компьютере Windows7 и не работает на каждом компьютере под управлением Windows8. То же самое для старых версий OpenCV. Есть ли общая проблема с OpenCV и Windows8?
«но ни одно из их предложений не решило его» -> Пожалуйста, уточните, что именно вы пробовали. Off-topic: 'QT + = core gui' можно удалить, так как по умолчанию добавлены core и gui. Смешно :) 'ui-> videoStatusLabel-> setText (« Kein Video geladen. »);' Вместо этого вы можете использовать QObject :: tr(). – lpapp
«/ home» также сильно жестко закодирован. Во всяком случае, получаете ли вы эту ошибку или какую? «Ошибка, видео не загружено»? – lpapp
Извините, все, что я уже пробовал, перечислены в тексте =) Это: установка новых кодеков, поиск различных видеоформатов, копирование dll в рабочий каталог, восстановление OpenCV (я также проверил, не пропустил ли параметр WITH_FFMPEG, но я не сделал) .. и так далее. Я близок к отчаянию = ( – Zamahra