open3d+vs+qt结合

文章详细描述了如何在VisualStudio2019中创建QT项目,并结合自己编译的Open3D版本进行配置。步骤包括选择Open3D版本、设置VC++目录、添加附加依赖项、复制预处理器定义、选择运行库以及在QTCreator中添加按钮和槽来运行Open3D代码。作者提供了一段创建并显示圆球的测试代码,最终成功运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版本:open3d 0.12和vs2019

open3d源码的编译和vs2019里qt插件安装就不说了,网上一堆说的,就是这个把open3d和vs结合起来我在网上看了很多博客和帖子都没有解决,一直会报错,之前一直用的cmake直接编译的所以没管,最后对照着open3d自带的例子配置出来了,其实很简单但是搞了我挺久。


1.先在VS里面创建QT项目

2.选择自己编译的open3d版本,我这里是release x64,注意qt需要在项目配置中设置为x64版本

3.项目右键-》属性-》VC++目录,添加如下包含open3d目录。

这里我的编译好的open3d库结构大概长这样

4.链接器,附加依赖项,在你之前编译好的example项目中随便复制一份lib目录过来

把example中的Lib文件全部照抄过来

5.c/c++-》预处理器,预处理器定义照抄example中的配置

6.c/c++代码生成-》运行库,选择多线程MT

7.QT Creator添加按钮和槽,添加open3d代码运行看效果,我这里用的圆球

附上我所使用的的测试代码,终于运行成功。

#include "Restructure.h"
#include"open3d/Open3D.h"
using namespace open3d;
Restructure::Restructure(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
}

Restructure::~Restructure()
{}

void Restructure::on_pushButton_clicked()
{
      auto sphere = open3d::geometry::TriangleMesh::CreateSphere(1.0);
      sphere->ComputeVertexNormals();
      sphere->PaintUniformColor({ 0.0, 1.0, 0.0 });
      open3d::visualization::DrawGeometries({ sphere });
      return ;
}

### 结合 Open3DQt 的开发概述 Open3D 是一个用于处理 3D 数据的开源库,而 Qt 则是一个跨平台的应用程序框架。两者结合可以实现强大的三维可视化功能。尽管官方文档可能未提供直接针对此主题的例子,但可以通过以下方法构建基于 Open3DQt 的应用程序。 #### 使用 PyQt 或 PySide 集成 Open3D PyQt/PySide 提供了 Python 绑定接口来访问 Qt 功能,这使得集成 Open3D 更加便捷。通过创建自定义窗口部件并将 Open3D 渲染器嵌入其中,能够实现实时交互式渲染[^4]。 ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout import open3d as o3d import numpy as np class O3DWidget(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): layout = QVBoxLayout() vis = o3d.visualization.VisualizerWithKeyCallback() vis.create_window(window_name="Open3D", width=800, height=600) mesh_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=1.0, origin=[0, 0, 0]) vis.add_geometry(mesh_frame) # 添加关闭回调函数 def close_callback(vis_): app.quit() vis.register_key_callback(256, close_callback) # ESC 键退出 while True: vis.poll_events() vis.update_renderer() if __name__ == '__main__': app = QApplication(sys.argv) ex = O3DWidget() sys.exit(app.exec()) ``` 上述代码展示了如何利用 `open3d` 库中的 Visualizer 类与 PyQt 进行基本整合[^4]。需要注意的是,在实际应用中应优化事件循环机制以避免阻塞主线程。 #### C++ 实现方式 如果倾向于使用原生 C++ 开发,则需手动管理 OpenGL 上下文并将其传递给 Open3D 的渲染引擎。这种方式复杂度较高,通常推荐借助第三方插件或者扩展模块完成此类任务[^5]。 例如,可参考 GitHub 社区贡献的一些项目资源链接作为学习起点[^6]: - https://github.com/intel-isl/Open3D/issues/797 (讨论关于 Qt Integration) - https://github.com/opencv/openvino_training_extensions/tree/main/tools/lstm_toolkit/qt_open3d_example 这些资料提供了更多具体实践细节和技术指导。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值