gpt4 book ai didi

c++ - 使用 cvShowImage() 显示滞后视频

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:00:17 26 4
gpt4 key购买 nike

我试图以 25fps 的速度流畅地显示视频文件,没有任何延迟。下面的代码执行此操作,但仅达到约 10fps,执行时间约为 0.1ms。使用 cvWaitKey(1) 我得到大约 0.03 到 0.04 毫秒,这将是完美的,但命名窗口只是保持灰色并且不显示视频!

这是因为 cvShowImage() 太慢了吗?有没有其他方法可以加快代码速度并顺利输出视频?

请参阅下面的代码。

提前致谢

阿德里安

#include <cv.h>
#include <iostream>
#include <highgui.h>
#include <cxcore.h>
#include <cvaux.h>
#include <sstream>
#include <time.h>
using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
CvCapture* vid = 0;

IplImage* input; //Input image

int fps;
int i=0;

clock_t start, end;

/*Creates the GUI to output the processed images*/
cvNamedWindow("Video input", 0);

/*Open input video*/
if (argc!=2)
{
cout << "Please specify an input video." << endl;
return -1;
}
else
{
vid=cvCreateFileCapture(argv[1]);
if (!vid)
{
cout << "Could not extract frame." << endl;
return -1;
}
}

input = cvQueryFrame(vid);

fps = (int)cvGetCaptureProperty(vid, CV_CAP_PROP_FPS);
cout << fps << endl;

cout << "Video found." << endl;
/*Extraction loop */
while (input)
{
start = clock();

cout << flush;
cout << i << "\r";

i++;

/*Show image*/
cvShowImage("Video input", input);

cvWaitKey(2); //Wait is needed or else we see a grey box

input = cvQueryFrame(vid); //Read next frame from video
end = clock();
cout << (double)(end-start)/CLOCKS_PER_SEC << " s" << endl;
};

/*Release the allocated memory for the frames */
cvReleaseImage(&input);
cvDestroyWindow("Video input");
return 1;
}

最佳答案

你试过没有所有 cout 的东西吗?

Microsoft STL 的调试版本具有 cout 处理,这几乎慢得令人难以置信。

关于c++ - 使用 cvShowImage() 显示滞后视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3351557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com