采用OpenCV窗口,并使全屏



我目前正在用c++做一个OpenCV项目,在那里我用kinect寻找运动,并用它来提示幻灯片(无识别)。目前,我正在使用OpenCV来显示幻灯片(因为我只有大约一周的时间来制作)。看起来不错,而且很快。唯一的问题是,这将是一个大制作的展示,我真的负担不起展示的窗口(我说的是窗口装饰,如标题栏等)。

我需要去掉标题栏。我做了很多研究,我发现,你可以通过调用cvGetWindowHandle("SlideShow")神奇地抓住窗口句柄,但那是一个无效的函数,所以我真的不知道我应该如何从那得到一个句柄来操纵。

我正在为windows和ubuntu开发这个程序,因为它最终会在windows机器上运行,但我只能在运行ubuntu的笔记本电脑上演示。

如果有人能告诉我如何把窗口和渲染它的全屏与一个调整大小的图像,以填补大部分,如果不是整个屏幕在Windows或Ubuntu,我将永远感激。

我在Ubuntu 11.04上使用OpenCV 2.1。在我的系统上,CV_WINDOW_FULLSCREEN和CV_WINDOW_AUTOSIZE标志都映射到1两个旗子的行为完全相同。它们给你一个固定大小的窗口,这是AUTOSIZE标志所期望的,而不是全屏。我认为这两个标志意味着不同的功能,尽管它们相似的外观非常令人困惑。标志CV_WINDOW_NORMAL映射到值0,这就是您所使用的。它给你一个可调整大小的窗口,你可以最大化,但它不是一个全屏窗口。

编辑:我刚刚在另一个stachoverflow帖子中找到了解决方案。下面是那个帖子的解决方案,在我的系统上效果很好:
    cvNamedWindow("Name", CV_WINDOW_NORMAL);
    cvSetWindowProperty("Name", CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);
    cvShowImage("Name", your_image);

我得到一个真正的全屏没有标题栏等

您可以使用cv::setWindowProperty函数,只需将其设置为CV_WINDOW_FULLSCREEN。

openCV-WIKI中的完整文档

在opencv/4.5.1中,是这样做的:

    namedWindow("Name", WINDOW_NORMAL);
    setWindowProperty ("Name", WND_PROP_FULLSCREEN, WINDOW_FULLSCREEN);

假设您已经添加了using namespace cv;

相关内容

  • 没有找到相关文章

最新更新