OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
启动 Viz

下一个教程: 小部件的姿势

目标

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

  • 打开一个可视化窗口。
  • 通过窗口名称访问窗口。
  • 启动事件循环。
  • 启动给定时间长度的事件循环。

代码

您可以从这里下载代码。

#include <opencv2/viz.hpp>
#include <iostream>
using namespace cv;
using namespace std;
static void help()
{
cout
<< "--------------------------------------------------------------------------" << endl
<< "这个程序展示了如何启动一个 3D 可视化窗口。您可以停止事件循环来继续执行。"
<< "您可以通过其名称访问同一个窗口。您可以运行给定时间段的事件循环。" << endl
<< "用法:" << endl
<< "./launching_viz" << endl
<< endl;
}
int main()
{
help();
viz::Viz3d myWindow("Viz Demo");
myWindow.spin();
cout << "第一个事件循环结束" << endl;
viz::Viz3d sameWindow = viz::getWindowByName("Viz Demo");
sameWindow.spin();
cout << "第二个事件循环结束" << endl;
sameWindow.spinOnce(1, true);
while(!sameWindow.wasStopped())
{
sameWindow.spinOnce(1, true);
}
cout << "最后的事件循环结束" << endl;
return 0;
}
Viz3d 类表示 3D 可视化窗口。这个类是隐式共享的。
定义 viz3d.hpp:68
void spin()
窗口渲染并启动事件循环。
void spinOnce(int time=1, bool force_redraw=false)
启动给定时间的事件循环。
bool wasStopped() const
返回事件循环是否已停止。
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
定义 core.hpp:107
STL 命名空间。

说明

这是程序的一般结构

  • 创建一个窗口。
    viz::Viz3d myWindow("Viz Demo");
  • 启动事件循环。这个事件循环将运行直到用户按下 eEqQ 终止它。
    myWindow.spin();
  • 通过其名称访问同一个窗口。由于窗口是隐式共享的,sameWindowmyWindow 完全相同。如果该名称不存在,则创建一个新窗口。
    viz::Viz3d sameWindow = viz::getWindowByName("Viz Demo");
  • 启动一个受控的事件循环。一旦启动,wasStopped 被设置为 false。在 while 循环中,每次迭代都调用 spinOnce 以防止事件循环完全停止。在 while 循环中,用户可以执行其他语句,包括与窗口交互的语句。
    sameWindow.spinOnce(1, true);
    while(!sameWindow.wasStopped())
    {
    sameWindow.spinOnce(1, true);
    }

结果

这是程序的运行结果。