cvWaitKey() slows down capture/display process
Hi,
I am using openCV to capture, display and save frames from ps3 eye camera. with 640x480 i could get 60fps but turns out that i only get about 16 when trying to display and save images at the same time. so i measured a bit and the main contributor to this slow process is cvWaitKey(). Is there any workaround ? here is the code for my loop:
// 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());
}
}
}
Why do you use waitkey anyways?
to update my display ?
Ah right :P Im used to do stuff with android. You dont need the waitkey there. Anyways, try to switch over to the new c++ style. C is deprecated.