在 openCV 中打开文件 (/home/vaibhav/opencv/modules/highgui/src/cap_ffmpeg_impl.hpp:553) 时出错

Posted

技术标签:

【中文标题】在 openCV 中打开文件 (/home/vaibhav/opencv/modules/highgui/src/cap_ffmpeg_impl.hpp:553) 时出错【英文标题】:Error opening file (/home/vaibhav/opencv/modules/highgui/src/cap_ffmpeg_impl.hpp:553) in openCV 【发布时间】:2014-02-14 08:04:29 【问题描述】:

我正在使用 OpenCV 显示视频 我的代码是

#include<opencv2/highgui.hpp>
#include<cv.h>
#include<opencv/cv.hpp>
#include<opencv2/opencv.hpp>
#include<cvaux.h>
#include<cxcore.h>
#include<stdio.h>
#include<highgui.h>
#include<stdlib.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
int main( int argc, char ** argv )

CvCapture* capture;
cvNamedWindow( "video", CV_WINDOW_AUTOSIZE ); 
capture = cvCreateFileCapture("/home/vaibhav/program/c/w.avi");
IplImage* frame;
while(1)
frame = cvQueryFrame( capture );
if( !frame ) break;
cvShowImage( "video", frame );
char c = cvWaitKey(33);
if( c == 27 ) break;


cvReleaseCapture( &capture );

cvDestroyWindow( "Webcam" );

return 0; 

程序可以编译,但运行时报错

我使用的是 Ubuntu 12.04 和 Eclipse

warning: Error opening file (/home/vaibhav/opencv/modules/highgui/src/cap_ffmpeg_impl.hpp:553)

【问题讨论】:

【参考方案1】:

在这里澄清一些混乱:

错误意味着它无法找到或打开您的视频文件。 (文件未找到,或编解码器不存在)

"/home/vaibhav/opencv/modules/highgui/src/cap_ffmpeg_impl.hpp:553" 只是代码的位置,是抛出错误的地方。

(请不要再使用已弃用的 c-api,他们像 5 年前一样停止开发它,切换到 c++ 的。)

【讨论】:

我该怎么办请告诉我 代码在 skm PC 中运行良好我的问题是什么 我遇到了同样的错误 - 尽管我的原因可能是一个不同的问题,但由于这个问题从未解决,我已经降级了这个澄清,因为它没有帮助。【参考方案2】:

我遇到了同样的问题。非常烦人(opencv 2.4.9)。但对我有用的是传递绝对文件名(avi 或 mpeg),即整个路径。

例如:

char* fileName = "D:/myVideos/video.avi"
...
VideoCapture capture(fileName );

【讨论】:

问题的作者如果在 Ubuntu 上,并且已经通过完整路径,所以答案似乎不适合他的问题 我在 Visual Studio 2013 中使用 Windows 7 64 位。这个答案解决了我的问题。谢谢!【参考方案3】:

如果使用绝对路径,请在路径中添加双斜杠,如下所示。

data = cv2.VideoCapture('C:\Data\MyVideo.mp4')

data.isOpened()

出[11]:假

data = cv2.VideoCapture('C:\\\Data\\\MyVideo.mp4')

data.isOpened()

输出[13]:真

【讨论】:

【参考方案4】:

我遇到了同样的问题,我做了两件事(我在 Windows 10 上使用 Python 2.7.9):

首先,将此文件夹添加到您的 Path 变量中:

C:\opencv\sources\3rdparty\ffmpeg\

而且这个文件opencv_ffmpeg300.dll 必须有正确的OpenCV 版本。比如我是3.0.0,所以你需要自己改。

接下来,确保在视频路径中添加额外的反斜杠:

video_capture = cv2.VideoCapture ('C:\Temp\\bouncingBall.avi')

Python 有一些特殊字符,所以如果只有一个反斜杠,它会以不同的方式解释它,从而引发错误。你可以在这里看到更多:

https://docs.python.org/2.0/ref/strings.html

因此是双反斜杠。

无论如何,希望这会有所帮助!

【讨论】:

这可能是 Windows 的解决方案,但不适用于 Linux,其中斜杠通常用于所有路径【参考方案5】:

遇到同样的问题后,我又添加了一个标题opencv/ml.h,用于机器学习。使用此标头和路径变量C:\opencv\sources\3rdparty\ffmpeg\,您的代码可以在我的机器上运行。

【讨论】:

【参考方案6】:

如果文件夹中没有视频,我也会遇到同样的错误。因此,只需将视频放在您不需要给出当前正在执行的长路径的地方(只是为了看看您的程序可以运行)。例如,我将视频放在“源文件夹”之外,所以我只写capture = cvCreateFileCapture("video.avi");

【讨论】:

【参考方案7】:

我也面临同样的问题,但问题是我使用了错误的分辨率。

改变

rtsp://admin:admin@192.168.1.58:554/h264/video.sdp?camera=13

默认解决了。 (不注明分辨率参数)

rtsp://admin:admin@192.168.1.58:554/h264/video.sdp

顺便说一句设备:EVO-05 Mini

【讨论】:

【参考方案8】:

我只是在整个视频路径中使用双引号而不是单引号,它对我有用! (在窗户上)

【讨论】:

以上是关于在 openCV 中打开文件 (/home/vaibhav/opencv/modules/highgui/src/cap_ffmpeg_impl.hpp:553) 时出错的主要内容,如果未能解决你的问题,请参考以下文章

opencv打开视频文件没有声音

opencv 无法打开包含文件

如何在 Java 中使用 openCV 的 VideoCapture 方法打开和处理 .mpeg 或 .avi 等视频文件

在 openCV 中打开文件 (/home/vaibhav/opencv/modules/highgui/src/cap_ffmpeg_impl.hpp:553) 时出错

怎么看自己安装的opencv的版本

无法在 OpenCV 中打开共享对象文件“libopencv_shape.so.3.1”