我正在尝试使用openCV读取AVI文件。在获取捕获之后,当我给while循环一个条件来控制queryFrame的执行程度时,就会出现问题。 视频中共有1251帧。
当我使用while (counter <= number_of_frames)
时,视频运行正常,
当我使用while (cvQueryFrame(capture))
时,视频运行正常,直到200-250帧,然后突然开始运行得更快,并在第625帧结束。我打印了FPS,它始终保持不变。
为什么会这样? 请帮忙!
答案 0 :(得分:3)
尝试以下方法......
C风格阅读..
#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 ++ STYLE ....
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;
}
试试这个...并检查它是否给出了统一的游戏率......