# imshow() "speed upping" cap >> img; [closed]

Hello guys, here is the strange stuff i found, calling imshow() and waitKey() functions after a cap >> img; in a loop can speedup the grabbing by halving the time (in my webcam from ~80ms to 40~ms), can someone explain my what's going on? There is a way for having a "fast" grabbing without the imshow()? Here's the code snippet (need C++11 and #include <chrono>):

     VideoCapture capture(0);
capture.set(CV_CAP_PROP_FRAME_WIDTH, 640);
capture.set(CV_CAP_PROP_FRAME_HEIGHT, 360);
capture.set(CV_CAP_PROP_FPS, 30);
if(!capture.isOpened()){
cout << "Failed to connect to the camera." << endl;
}

Mat frame;
int i = 60;

while(1){

auto t1 = chrono::high_resolution_clock::now();
capture >> frame;
auto t2 = chrono::high_resolution_clock::now();

cout << "grabbing ms: " << chrono::duration_cast<std::chrono::milliseconds>(t2-t1).count() << endl;

//COMMENT imshow() and see the capture >> frame; taking twice the time
imshow("Debug",tmpFrame);

i--; cout << i << endl;
if(waitKey(32) == 27 || i < 0){
capture.release();
return 0;
}
}

edit retag reopen merge delete

### Closed for the following reason question is not relevant or outdated by sturkmen close date 2020-09-27 11:52:07.064425

I do not get it: you are timing just the capture &gt;&gt; frame and you are saying that if you use imshow and waitKey it is faster than when you do not use them? Then certainly there is something wrong