C++ OpenCV/无法打开AVI文件
我正在使用opencv检测闪烁。我能够让我的项目运行与流从相机捕获,一切都很好。我试图在一个包含*.avi文件的数据库上测试我的算法,但我无法打开任何一个。我检查了它们的编解码器版本,下载了正确的编解码器,但它仍然不工作。 我决定尝试至少尝试加载剪辑,使用我在互联网上找到的代码:C++ OpenCV/无法打开AVI文件,c++,opencv,capture,avi,C++,Opencv,Capture,Avi,我正在使用opencv检测闪烁。我能够让我的项目运行与流从相机捕获,一切都很好。我试图在一个包含*.avi文件的数据库上测试我的算法,但我无法打开任何一个。我检查了它们的编解码器版本,下载了正确的编解码器,但它仍然不工作。 我决定尝试至少尝试加载剪辑,使用我在互联网上找到的代码: int main( int argc, char** argv ){ int key = 0; // Initialize camera and OpenCV image //CvCapture* cap
int main( int argc, char** argv ){
int key = 0;
// Initialize camera and OpenCV image
//CvCapture* capture = cvCaptureFromCAM( 0 );
CvCapture* capture = cvCaptureFromAVI( "file.avi" );
IplImage* frame = cvQueryFrame( capture );
// Check
if ( !capture )
{
fprintf( stderr, "Cannot open AVI!\n" );
return 1;
}
// Get the fps, needed to set the delay
int fps = ( int )cvGetCaptureProperty( capture, CV_CAP_PROP_FPS );
// Create a window to display the video
cvNamedWindow( "video", CV_WINDOW_AUTOSIZE );
while( key != 'x' )
{
// get the image frame
frame = cvQueryFrame( capture );
// exit if unsuccessful
if( !frame ) break;
// display current frame
cvShowImage( "video", frame );
// exit if user presses 'x'
key = cvWaitKey( 1000 / fps );
}
// Tidy up
cvDestroyWindow( "video" );
cvReleaseCapture( &capture );
return 0;
}
但是它仍然没有改变任何东西,捕获仍然是空的。你知道我现在能做什么吗?
提前谢谢
E:我在x64 windows上使用opencv 2.4.6,代码似乎是正确的
你把问题标注为C++,但是IplImage是从英特尔图像处理库中派生出来的,是原生OpenCV C库的一部分。在OpenCV C++库中,我猜没有IPLION或不应该使用,并且必须使用CV::Mat代替.< /P> 关于这个问题: 您确定使用正确的ffmpeg或任何其他视频库支持编译OpenCV吗?确保已安装所需的编解码器,然后使用必要的标志重新编译opencv。也许会有帮助
确保opencv安装cmake的输出包含类似的文本:found gstreamer-base-0.10
GTK+ 2.x: YES
FFMPEG: YES
GStreamer: YES
V4L/V4L2: Using libv4l
是的我也有同样的问题,
然后我用课堂录像来代替
我猜安装了不正确的编解码器。我们需要按照OpenCV的建议安装正确的编解码器。检查VideoWriter::VideoWriter部分。我们需要FOURCC的视频编解码器。小心。安装可能会安装垃圾和编解码器。并非所有编解码器都能识别。至少现在我有了mpeg4和DivX,可以打开Megamind.avi,OpenCV自己的演示程序使用。是的,我已经编译了ffmpeg。我发现其中一个原因可能是opencv只支持i420格式。实际上,我正在尝试使用mencoder转换文件,但它不起作用,说我缺少oac选项。我使用的这行代码与互联网上所有教程中提到的相同:mencoder in.avi-ovc raw-vf format=i420-o out.avi我应该在另一个问题中询问它吗?。无论如何谢谢你的帮助:哦,好吧。我设法找到了如何将格式更改为i420,但它仍然不起作用,所以我认为这不是问题所在。