-1

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

任何建议,什么原因?如何在不创建其 GUI 窗口的情况下获取 OpenCV 框架?

我正在使用 OpenCV 2.4.3 (cvQueryFrame)、VS2010 c++、WindowsXP

谢谢。

4

3 回答 3

2

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

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

于 2013-07-31T07:22:47.960 回答
2

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

于 2013-07-31T12:13:01.520 回答
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);
   }
}

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

于 2013-08-01T07:21:01.573 回答