启动Viz
目标
在本教程中,您将学习如何
- 打开一个可视化窗口。
- 以其名称访问窗口。
- 启动事件循环。
- 在特定时间内启动事件循环。
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);
}
结果
这是程序的结果。