简体   繁体   中英

how to grab a OpenCV frame without showing it or without creating cvNamedWindow?

I do not understand why OpenCV doesn't work when we do not need to create OpenCV window using cvNamedWindow. Actually, I do not want to use OpenCV GUI window, I want to use third party GUI in order to display grabbed frame, So for this, i do not need to create OpenCV window. But When I do not create OpenCV window, my application gets stuck, nothing works, and when I do create OpenCV window using cvNamedWindow, everything works fine.

Any suggestion, whats the reason? how can I grab OpenCV frame without creating its GUI window?

I am using OpenCV 2.4.3 (cvQueryFrame), VS2010 c++, WindowsXP

Thanks.

you probably need to skip the waitKey() call, too ;)

(also, do yourself a favour, and skip the c-api. it's a real PITA and will go away soon)

That's because you are grabbing images at a faster rate than what the camera can ouput. You need to add a little delay to your while cycle. If your camera does 25FPS, you should add ~1/25 of a second or so.

Solved: The problem was this, actually, I was creating a third party GUI window inside of the pthread which was causing its infinite updating. When I created window outside of the pthread, it works fine.

procedure is this:

void Init()
{
   createGUIwin(w, h);
   init_pthread();
}

void init_pthread(void*)
{
   //createGUIwin(w, h); // before I was creating GUIwin here
   while(ON)
   {
      frame = getOCVframe();
      UpdateGUIwin(frame);
      key = cvWaitKey(10);
   }
}

Thanks everyone. I appreciate your answers.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM