【发布时间】:2013-09-09 15:00:52
【问题描述】:
我正在将 PS3 Eye Camera Video 捕获为我调整大小和显示的图像,并将它们保存到磁盘。我在帧率方面遇到了麻烦,所以我测量了每个单独进程的时间。事实证明,唯一真正减慢捕获速度的过程是 cvWaitKey(1),它为每个捕获循环增加了大约 20 毫秒。
有没有办法以某种方式避免 cvWaitKey() ?
测量的时间将是大约 20 毫秒(没有等待键和显示)和 60 毫秒(显示需要等待键)。调整大小不会增加这么多时间。
感谢您的帮助。
// image capturing loop
while(_running)
{
//activate cvWaitKey - this drops framerate significantly!
cvWaitKey(1);
//get frame from capture and put into buffer
CLEyeCameraGetFrame(_cam, pCapBuffer);
//get system timestamps
GetSystemTime(&st);
GetLocalTime(<);
// Resize image to fit screen size
cvResize(pCapImage,resizedpCapImage,CV_INTER_NN);
//display image
cvShowImage(_windowName, resizedpCapImage);
//clear string
sstm.str(std::string());
//complete filname
sstm << _folder << prefix << _participant << std::setfill('0') << std::setw(10) << i << "-" << st.wHour << st.wMinute << st.wSecond << st.wMilliseconds << suffix;
image_name = sstm.str();
c = image_name.c_str();
//log if enabled
if (_logging){
//try to save image
try {
cvSaveImage(c, pCapImage); //bmp = speed!
}
catch (runtime_error& ex) {
fprintf(stderr, "Exception converting image to bmp format: %s\n", ex.what());
}
}
}
【问题讨论】:
标签: c++ opencv computer-vision