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

时间:2014-02-14 08:04:30

标签: opencv

我正在使用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)

8 个答案:

答案 0 :(得分:12)

在这里澄清一些困惑:

错误表示无法找到或打开视频文件。 (找不到文件,或者编解码器不存在)

“/ home / vaibhav / opencv / modules / highgui / src / cap_ffmpeg_impl.hpp:553”只是代码的位置,引发错误。

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

答案 1 :(得分:2)

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

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

data.isOpened()
  

Out [11]:False

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

data.isOpened()
  

Out [13]:True

答案 2 :(得分:1)

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

E.g:

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

答案 3 :(得分:1)

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

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

  

C:\的OpenCV \源\的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

因此双反斜杠。

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

如果文件夹中没有视频,我也会遇到同样的错误。所以,只需将视频放在一个你不需要提供当前正在做的长路径的地方(只是为了看你的程序可以工作)。例如,我将视频放在“源文件夹”之外,所以我只写capture = cvCreateFileCapture("video.avi");

答案 6 :(得分:0)

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

更改

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

默认解决。 (未指示分辨率参数)

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

BTW设备:EVO-05 Mini

答案 7 :(得分:0)

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