tkinter窗口选择pcd文件并显示点云(open3d)

测试用兔子
在这里插入图片描述


# !/user/bin/env Python3
# -*- coding:utf-8 -*-
import open3d as o3d
import numpy as np
import os
import tkinter as tk
from tkinter import filedialog, dialog
import open3d as o3d
import numpy as np

file_path = ''
file_text = ''
vis = None

def init_window():
    # ------------------------初始化显示窗口-------------------------
    vis = o3d.visualization.Visualizer()
    vis.create_window(window_name='pcd', width=800, height=600)
    # ------------------------可视化参数设置-------------------------
    opt = vis.get_render_option()
    opt.background_color = np.asarray([0, 0, 0])  # 设置背景色
    opt.point_size = 2  # 设置点云大小
    opt.show_coordinate_frame = True  # 设置是否显示坐标系


def updata_pcd(vis):
    pcd = o3d.io.read_point_cloud(pcd_path)
    vis.update_geometry(pcd)  # 更新窗口中显示的内容
    vis.add_geometry(pcd)  # 添加点云到可视化窗口
    vis.poll_events()
    vis.update_renderer()  # 更新显示窗口
    vis.clear_geometries()  # 清空显示内容

def choose_pcd():
    '''
    打开文件
    :return:local_
    '''
    global file_path
    global file_text
    file_path = filedialog.askopenfilename(title=u'选择文件', initialdir=(os.path.expanduser('H:/')))
    print('打开文件:', file_path)
    if file_path is not None:

        file_text = file_path
        text1.insert('insert', file_text)

def open_point():
    global file_text
    print("加载pcd文件路径:" + file_text)
    pcd = o3d.io.read_point_cloud(file_text)
    print(pcd)  # 输出点云点的个数
    print(np.asarray(pcd.points))  # 输出点的三维坐标
    print('给所有的点上一个统一的颜色,颜色是在RGB空间得[0,1]范围内得值')
    pcd.paint_uniform_color([0, 1, 0])
    o3d.io.write_point_cloud("copy_of_fragment.pcd", pcd)
    o3d.visualization.draw_geometries([pcd])



if __name__ == '__main__':
    window = tk.Tk()
    window.title('窗口标题')  # 标题
    window.geometry('500x300')  # 窗口尺寸
    text1 = tk.Text(window, width=50, height=10, bg='orange', font=('Arial', 12))
    text1.pack()

    vis1 = init_window()
    bt1 = tk.Button(window, text='选择pcd文件', width=15, height=2, command=choose_pcd)
    bt1.pack()

    bt2 = tk.Button(window, text='打开点云', width=15, height=2, command=open_point)
    bt2.pack()

    window.mainloop()  # 显示




  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员进化不脱发!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值