2013-02-09 88 views
-2

我已經實現了簡單的avi文件顯示video.for我的離線對象檢測。 但我的問題是,我沒有得到任何錯誤,但當我調試它時,我沒有得到任何顯示。請指導我。AVI文件無法打開窗口

int main(int argc, char** argv) 
    { 
cvNamedWindow("Example2", CV_WINDOW_AUTOSIZE); 
CvCapture* capture = cvCreateFileCapture("S:\MOVIES\English movies\\TANGLED.avi"); 
    IplImage* frame; 

while(1) { 
frame = cvQueryFrame(capture); 
if(!frame) break; 
cvShowImage("Example2", frame); 
char c = cvWaitKey(33); 
if(c == 27) break; 
} 
cvReleaseCapture(&capture); 
cvDestroyWindow("Example2"); 
} 

對於視頻文件還有任何大小限制或它取決於opencv的版本?我的視頻是爲了移動human.I在Visual Studio中使用opencv2.3 C++ 2008 請任何人都可以引導我?

Thanx。

回答

1

AVI文件實際上只是一個容器規範,對於它將接受的大量媒體格式來說相當混雜,但是播放主機必須具有所有媒體組件的解碼器,或者根據播放應用程序出現無法打開/播放視頻文件的錯誤。你可以採取一些措施來解決這個問題:

  • 安裝了OS + bittedness回放目標預製的二進制編碼,
  • 哪個編解碼器,你需要/想和全球加他們爲你的操作系統通常的方式編譯。
  • 使用大多數媒體播放器默認支持的編解碼器組合來查找,獲取和/或重新創建新版本。
  • 呼叫附近的黑客,並要求他將其轉換爲不同的格式
  • 踐踏和歡蹦亂跳在討伐規範媒體組件的AVI文件
  • 只需使用MKV容器或作者的DVD光盤,而不是格式。 AVI文件與旋轉媒體一樣過時。
  • 佔用虛擬客戶農場......購買4個SM15000機架集羣,創建10000個虛擬機,配置支持基礎架構並使用它們接管世界,要求統一,然後製作甜點布丁。

更深入的細節是在這裏:http://en.wikipedia.org/wiki/Audio_Video_Interleave

1

問題是最有可能是你傳遞文件名的運作方式。嘗試使用雙反斜線:

CvCapture* capture = cvCreateFileCapture("S:\\MOVIES\\English movies\\TANGLED.avi"); 

始終測試功能的結果:

if (!capture) 
{ 
    printf("!!! Failed to open file.\n"); 
    return; 
}