嵌入OpenCV Viz3d和Qt

时间:2015-03-10 16:13:16

标签: c++ qt opencv

我希望在我的Qt应用程序中有一个OpenCv Viz3d窗口。我知道还有其他类似的问题,但这些问题与OpenCV的2D成像能力有关。

到目前为止,我的方法是创建一个继承自QWidget和cv :: viz :: Viz3d的类。但是,我无法弄清楚如何覆盖cv :: viz :: Viz3d的绘制事件以显示在GUI内部而不是它自己的窗口。

如果有一种方法可以从cv :: viz :: Viz3d中检索cv :: Mat,那么这可能也会起作用;然而,它并没有像我从Viz3d那样得到一个cv :: Mat。

1 个答案:

答案 0 :(得分:1)

Viz3d的实现取决于构建VTK。在内部,它使用Qt和OpenGL(取决于程序集)。

由于viz3d使用自己的事件循环,因此在一个线程中与其他窗口一起使用是不现实的。就个人而言,我为窗口创建了一个单独的QThread并在另一个线程中使用它(数据通过QImage(QImage to cv::Mat)发送信号)。

您还可以使用静态方法QApplication :: activeWindow()或您自己的版本来访问此窗口。然后你可以在这个窗口中捕获一个图像(抓取())并提交给他自己的。