c++ - 嵌入 OpenCV Viz3d 和 Qt

标签 c++ qt opencv

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

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

如果有办法从 cv::viz::Viz3d 中检索 cv::Mat,那也可能会起作用;但是,我似乎无法从 Viz3d 获得 cv::Mat。

最佳答案

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

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

您也可以使用静态方法 QApplication::activeWindow() 或您自己的版本来访问此窗口。然后就可以在这个窗口抓取一张图片(grab())提交给他自己了。

关于c++ - 嵌入 OpenCV Viz3d 和 Qt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28968729/

相关文章:

c++ - 循环范围 : VS 2008 doesnt support it?

c++ - 当一个人在 Visual Studio 2010 中编译一个 `C` 文件时,它是否被编译为 C++ 文件?

c++ - 数组中值的快速乘法

qt - 在 Mac Os 上执行步骤 'qmake' 时出错

c++ - 将一行 cv::Mat 转换为 int

c - [编辑]高斯差分的实现

c++ - 'std' 以外的 C++ 中有用的命名空间

c++ - QGraphicsScene.itemAt() 只返回零,整个场景很慢

c++ - 实时 QCustomPlot 的设置

android - 运行使用 OpenCV 的 Android 应用程序时出错