当我们不需要使用cvNamedWindow创建OpenCV窗口时,我不明白为什么OpenCV不起作用。 实际上,我不想使用OpenCV GUI窗口,我想使用第三方GUI来显示抓取框架,所以为此,我不需要创建OpenCV窗口。但是当我不创建OpenCV窗口时,我的应用程序卡住了,没有任何效果,当我使用cvNamedWindow创建OpenCV窗口时,一切正常。
有什么建议吗,原因是什么?如何在不创建GUI窗口的情况下抓取OpenCV帧?
我使用的是OpenCV 2.4.3(cvQueryFrame),VS2010 c ++,WindowsXP
感谢。
答案 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);
}
}
谢谢大家。我很感激你的回答。