Qt 5.2/OpenCV 2.4.8-无法通过VideoCapture打开视频文件
Qt 5.2 / OpenCV 2.4.8 - Can’t open video files via VideoCapture
我有一个自己无法解决的大问题。OpenCV本身运行良好,但我无法加载视频。这是我的代码:
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
和主窗口类:
#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";
}
}
路径是正确的,我尝试了许多不同的视频格式,但他从未加载视频。我在Windows 8机器上运行Qt,安装了"K-Lite编解码器包10.2.0 Basic"和ffmpeg。我的视频播放器可以正常播放这些视频。我还试图将.dll复制到工作目录,在system32目录中搜索opencv dll,并在这台计算机上用mingw重建opencv。我知道很多人都有同样的问题,但他们的建议都没有解决。有人知道如何解决这个问题吗?
非常感谢!
Nadine
----更新----我仍然无法打开视频文件,所以我在Windows7 64位系统上编程了该应用程序。它运行良好,但当我尝试在Windows8计算机上打开应用程序时,它仍然无法打开文件。安装了哪些编解码器并不重要,因为它通常在每台Windows7计算机上运行,在每台Windows8计算机上都会失败。。旧的OpenCV版本也是如此。OpenCV和Windows8是否存在一般问题?
我也遇到了同样的问题。现在问题解决了。我们需要按照OpenCV的建议安装正确的编解码器,网址为http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html.检查VideoWriter::VideoWriter部分。我们需要FOURCC的视频编解码器http://www.fourcc.org/codecs.php.小心。安装可能会安装垃圾以及编解码器。并非所有的编解码器都被识别。至少现在我有了mpeg4和DivX,可以打开OpenCV自己的演示程序使用的Megamind.avi。
我不知道是否还有人需要答案,但以下是我解决这个问题的方法。
我只是简单地将opencv_ffmpegXXX.dll复制到带有.exe文件的目录中。我花了几天时间才找到。感谢您的回答和帮助!
- 如何在c++中录制具有精确帧时间戳的视频
- 如何在QT中的自定义视频小工具t上绘制矩形
- 如何使用OpenCV-C++编写*.mp4视频?
- 开放 CV 中的动态内存分配,用于视频处理
- 将帧从python VideoCapture()传递给c ++
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- 如何在 opencv 中使用 cv::VideoCapture::waitAny()
- OpenCV QT,显示视频的帧(不使用while循环)
- FFmpeg——使用硬件加速进行视频解码
- 在 openCV 中手动停止视频
- 强制Qt相机视频格式
- 在macOS Mojave上尝试OpenCV视频捕获时"Abort Trap: 6"
- 应用程序在打开的简历中捕获视频后没有响应
- 使用 IMFSinkWriter 编码的视频的播放速度会根据宽度而变化
- 如何在 c++ 中通过 http 发送大型视频文件?
- 在 QLabel 中显示视频
- OPENCV VIDEOCAPTURE说视频有0帧(C 和Python)
- Qt 5.2/OpenCV 2.4.8-无法通过VideoCapture打开视频文件
- OpenCV VideoCapture在大尺寸视频上崩溃
- 使用VideoCapture (OpenCV)从图像创建视频