阅读(284) (11)

启动Viz

2017-10-27 10:10:45 更新

目标

在本教程中,您将学习如何

  • 打开一个可视化窗口。
  • 以其名称访问窗口。
  • 启动事件循环。
  • 在特定时间内启动事件循环。

Code

你可以从这里下载代码。


#include <opencv2/viz.hpp>
#include <iostream>
using namespace cv;
using namespace std;
static void help()
{
    cout
    << "--------------------------------------------------------------------------" << endl
    << "This program shows how to launch a 3D visualization window. You can stop event loop to continue executing. "
    << "You can access the same window via its name. You can run event loop for a given period of time. " << endl
    << "Usage:"                                                                     << endl
    << "./launching_viz"                                                            << endl
    << endl;
}
int main()
{
    help();
    viz::Viz3d myWindow("Viz Demo");
    myWindow.spin();
    cout << "First event loop is over" << endl;
    viz::Viz3d sameWindow = viz::getWindowByName("Viz Demo");
    sameWindow.spin();
    cout << "Second event loop is over" << endl;
    sameWindow.spinOnce(1, true);
    while(!sameWindow.wasStopped())
    {
        sameWindow.spinOnce(1, true);
    }
    cout << "Last event loop is over" << endl;
    return 0;
}

说明

这是程序的一般结构:

  • 创建一个窗口。
viz :: Viz3d myWindow(“Viz Demo”);
  • 此事件循环将运行,直到用户通过按E、E、Q、Q终止它。
myWindow.spin();
  • 通过其名称访问相同的窗口。由于窗口是隐式共享的,所以windowWindow与myWindow完全相同。如果名称不存在,将创建一个新窗口。
viz :: Viz3d sameWindow = viz :: get(“Viz Demo”);

启动受控事件循环。一旦启动,wasStopped设置为false。在while循环中,在每次迭代中,调用spinOnce来防止事件循环完全停止。在while循环中,用户可以执行其他语句,包括与窗口交互的语句。

sameWindow.spinOnce(1,true);
while(!sameWindow.wasStopped())
{
    sameWindow.spinOnce(1,true);
}

结果

这是程序的结果。

启动Viz