簡體   English   中英

cvQueryFrame(capture)始終返回null

[英]cvQueryFrame(capture) always returns null

有誰知道為什么我不斷收到空幀? 我嘗試跳過前五個,但仍然為null。

int _tmain(int argc, char** argv)
{
CvCapture *capture  = cvCaptureFromFile(argv[1]);

int fps = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
IplImage* frame;
cvNamedWindow("video", CV_WINDOW_AUTOSIZE);
while(1)
{
    frame = cvQueryFrame(capture);
    if(!frame)
        break;
    cvShowImage("video", frame);
    char c = cvWaitKey(1000/fps);
    if(c == 33)
        break;
}
cvReleaseCapture( &capture);
cvDestroyWindow( "video" );

return 0;
}

視頻文件必須未壓縮avi! 所以實際上我得到的是空幀,因為cvCapture返回了空值,因為我的輸入視頻文件未解壓縮。

我使用您的代碼進行測試,然后在“ xvid”格式的視頻中運行良好。 我認為OpenCV的“捕獲”功能可能會處理一些流行和較舊的視頻格式。 格式為“ H264”的視頻可能無法正常工作。

cvCaptureFromFile()失敗時,它返回NULL ,我懷疑它失敗了:

CvCapture *capture  = cvCaptureFromFile(argv[1]);
if (!capture)
{
    // print error, quit application
}

通常由於以下原因之一而失敗:它找不到文件,或者OpenCV不知道如何打開它。 例如,OpenCV不支持.mkv文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM