每當我試圖讀出的AVI文件,並在Windows XP中使用opencv 2.1和VS 2008轉換成grayscal未知錯誤而讀AVI文件在OpenCV中
我不爲什麼我收到以下運行時錯誤在同一時間,我無法得到它的幫助
ERROR 1
[NULL @ 0x37da10]無效和 低效VFW-AVI包裝B幀 檢測FPS = 23幀(瓦特,h)=(640 , 272)Output#0,avi,to'test.avi': Stream#0.0:Video:mpeg4,yuv420p, 640x272,q = 2-31,11141kb/s,90k tbn, 23 .98 tbc [MPEG4 @ 0x37f920]除去幀率 共同因素[MPEG4 @ 0x37da10]無效和低效 VFW-AVI包裝B幀檢測 編譯器未對準堆棧 變量。 Libavcodec已被編譯錯誤並且可能非常慢或者 崩潰。這不是libavcodec中的 中的錯誤,而是編譯器中的錯誤。您可能會嘗試使用gcc> = 4.2重新編譯。 不要向FFmpeg 開發者報告崩潰。 [MPEG4 @ 0x37da10]無效 和低效VFW-AVI填充乙 幀中檢測
如果我嘗試一些其他avi文件然後我得到以下運行時錯誤
ERROR 2
fps = 15幀(w,h)=(176,184) 輸出#0,avi,到'demo.avi': 流#0.0:視頻:mpeg4,yuv420p,176x184,q = 2-31,2072 kb/s, 90k tbn,15 tb c編譯器未對齊 堆棧變量。 Libavcodec已被編譯錯誤並且可能非常慢或者 崩潰。這不是libavcodec中的 中的錯誤,而是編譯器中的錯誤。您可能會嘗試使用gcc> = 4.2重新編譯。 不要向FFmpeg 開發者報告崩潰。
我真的不知道什麼是這裏發生了從學習OpenCV的我的代碼,
// VideoCon.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
cvNamedWindow("Example2_10", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Log_Polar", CV_WINDOW_AUTOSIZE);
CvCapture* capture = cvCreateFileCapture("Rambo.avi");
if (!capture){
return -1;
}
IplImage* bgr_frame;
double fps = cvGetCaptureProperty (
capture,
CV_CAP_PROP_FPS
);
printf("fps=%d\n",(int)fps);
CvSize size = cvSize(
(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT)
);
printf("frame (w, h) = (%d, %d)\n",size.width,size.height);
#ifndef NOWRITE
CvVideoWriter* writer = cvCreateVideoWriter(
// On linux Will only work if you've installed ffmpeg development files correctly,
"test.avi",
// otherwise segmentation fault. Windows probably better.
CV_FOURCC('D','X','5','0'),
fps,
size
);
#endif
IplImage* logpolar_frame = cvCreateImage(
size,
IPL_DEPTH_8U,
3
);
IplImage* gray_frame = cvCreateImage(
size,
IPL_DEPTH_8U,
1
);
while((bgr_frame=cvQueryFrame(capture)) != NULL) {
cvShowImage("Example2_10", bgr_frame);
cvConvertImage( //We never make use of this gray image
bgr_frame,
gray_frame,
CV_RGB2GRAY
);
cvLogPolar(bgr_frame, logpolar_frame,
//This is just a fun conversion the mimic's the human visual system
cvPoint2D32f(bgr_frame->width/2,
bgr_frame->height/2),
40,
CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS);
cvShowImage("Log_Polar", logpolar_frame);
//Sigh, on linux, depending on your ffmpeg, this often won't work ...
#ifndef NOWRITE
cvWriteToAVI(writer, logpolar_frame);
#endif
char c = cvWaitKey(10);
if(c == 27) break;
}
#ifndef NOWRITE
cvReleaseVideoWriter(&writer);
#endif
cvReleaseImage(&gray_frame);
cvReleaseImage(&logpolar_frame);
cvReleaseCapture(&capture);
}
如果他能夠播放視頻,那麼他已經安裝了正確的編解碼器。我建議你將這個問題提交給libavcoded郵件列表。 – karlphillip 2010-07-26 12:51:30
幾個月前我有一個非常相同的問題。我能夠用VLC(內置編解碼器)播放電影,但opencv給了我一些廢話。 – MBZ 2010-07-26 12:53:56
我安裝了Divx編解碼器,Xvid和ffdshow,現在m真的很沮喪,不知道還需要什麼 – Hunt 2010-07-26 13:12:30