2012-12-21 9 views
2

openCV를 사용하여 AVI 파일을 읽으려고합니다. 캡처를 얻은 후에는 while 루프에 queryFrame이 수행 될 범위를 제어하는 ​​조건을 부여 할 때 문제가 발생합니다. 비디오에는 총 1251 개의 프레임이 있습니다. 내가 while (counter <= number_of_frames)를 사용하는 경우OpenCV를 사용하여 AVI 비디오를 읽을 때 AVI 비디오의 속도가 증가하는 이유는 무엇입니까?

, 비디오 내가 while (cvQueryFrame(capture))를 사용하면, 동영상, 200-250th 프레임까지 잘 실행 후 갑자기 빠르고 완료 625번째 프레임에 의해 실행을 시작 , 잘 실행합니다. 나는 FPS를 인쇄했다. 그것은 항상 똑같다.

왜 이런 일이 발생합니까 ?? 도와주세요!

답변

3

는 ..

#include <opencv2/video/video.hpp> 
#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 

using namespace cv; 

int main() 
{ 
    CvCapture *video; 
    video = cvCreateFileCapture("ADDRESS TO THE FILE"); 
    IplImage *frame; 

    while(true) 
    { 
    frame = cvQueryFrame(video); 
    if(frame->imageData==NULL) 
     { 
     std::cout<<"END OF VIDEO"<<std::endl; 
     break; 
     } 
    cvShowImage("VIDEO",frame); 
    cvWiatKey(25);//SINCE MOST OF THE VIDEOS RUN AT 25 FPS 
    } 
    return 0; 
} 

C++ 스타일 ....

int main() 
{ 
    VideoCapture video("ADDRESS OF VIDEO"); 
    Mat frame; 

    while(true) 
    { 
    video >> frame; 
    if(frame.data==NULL) 
     { 
     std::cout<<"END OF VIDEO FILE"<<std::endl; 
     break; 
     } 
    imshow("VIDEO",frame); 
    waitKey(25); 
    } 
return 0; 
} 

이 시도 ... 체크 다음 ...

C 스타일의 읽기를 시도 그것은 균일 한 플레이 율을 제공한다면 ...