在 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) 时出错的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Java 中使用 openCV 的 VideoCapture 方法打开和处理 .mpeg 或 .avi 等视频文件
在 openCV 中打开文件 (/home/vaibhav/opencv/modules/highgui/src/cap_ffmpeg_impl.hpp:553) 时出错