如何在不显示或不创建cvNamedWindow的情况下获取OpenCV框架?

时间:2013-07-31 06:40:28

标签: visual-studio-2010 visual-c++ opencv user-interface video-capture

当我们不需要使用cvNamedWindow创建OpenCV窗口时,我不明白为什么OpenCV不起作用。 实际上,我不想使用OpenCV GUI窗口,我想使用第三方GUI来显示抓取框架,所以为此,我不需要创建OpenCV窗口。但是当我不创建OpenCV窗口时,我的应用程序卡住了,没有任何效果,当我使用cvNamedWindow创建OpenCV窗口时,一切正常。

有什么建议吗,原因是什么?如何在不创建GUI窗口的情况下抓取OpenCV帧?

我使用的是OpenCV 2.4.3(cvQueryFrame),VS2010 c ++,WindowsXP

感谢。

3 个答案:

答案 0 :(得分:2)

你可能也需要跳过waitKey()调用;)

(另外,请帮个忙,跳过c-api。这是一个真正的PITA,很快就会消失)

答案 1 :(得分:2)

那是因为你以比相机输出更快的速度抓取图像。您需要为while循环添加一点延迟。如果你的相机功能为25FPS,你应该增加~1 / 25秒左右。

答案 2 :(得分:0)

解决了:问题是,实际上,我在pthread内部创建了第三方GUI窗口,导致其无限更新。当我在pthread之外创建窗口时,它工作正常。

程序是这样的:

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);
   }
}

谢谢大家。我很感激你的回答。