体元法--体积计算

news2025/4/17 8:55:43

文章目录

    • 环境:
    • 1.1 体元法介绍:
    • 2.1 python代码
    • 3.1 可视化

环境:

Open3D

1.1 体元法介绍:

用一个个体素去占据点云,然后对所有体素求和

2.1 python代码

conda activete deeplabv3plus(环境名称–安装好open3D的)
python demo.py

import open3d as o3d
import numpy as np

def draw_point_cloud(result, batch=False):
    if not batch:
        for i in range(len(result)):
            o3d.visualization.draw_geometries([result[i]], "result", 800, 600,
                                               50, 50, False, False, True)
    else:
        o3d.visualization.draw_geometries(result, "result", 800, 600,
                                          50, 50, False, True, True)

def main():
    # 读取点云数据
    pc = o3d.io.read_point_cloud("../../TestData/Pr1.pcd")

    # 体元累加法
    d = 0.1  # 体元的大小
    min_bound = pc.get_min_bound()
    max_bound = pc.get_max_bound()
    x_min, x_max = min_bound[0], max_bound[0]
    y_min, y_max = min_bound[1], max_bound[1]
    z_min, z_max = min_bound[2], max_bound[2]

    # 创建体元
    print("开始计算...")
    row = int(np.ceil((x_max - x_min) / d) + 1)
    col = int(np.ceil((y_max - y_min) / d) + 1)
    height = int(np.ceil((z_max - z_min) / d) + 1)
    flags = np.zeros((row, col, height), dtype=bool)

    for i in range(len(pc.points)):
        x, y, z = pc.points[i]
        m = int(np.floor((x - x_min) / d))
        n = int(np.floor((y - y_min) / d))
        k = int(np.floor((z - z_min) / d))
        flags[m, n, k] = True

    count = np.sum(flags)
    print("计算完成!")
    v = d * d * d * count
    print("当前有效体元为:", count)
    print("树冠体积为:", v)

    result = [pc]
    draw_point_cloud(result, False)
    input("按任意键继续...")

if __name__ == "__main__":
    main()

3.1 可视化

在这里插入图片描述


😊 一箭三连 😊
⭐⭐ 祝你成功 ⭐⭐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1356183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python django 生鲜商城管理系统

python django 生鲜商城管理系统,包含用户端和管理端 功能: 用户端:商城主页展示,登录,注册,用户中心,购物车,我的订单,购物车结算 管理端:登录,商品&…

QT的坐标系统,回收机制、菜单栏,工具栏,状态栏,对话框及资源文件

QT的坐标系统,回收机制、菜单栏,工具栏,状态栏,对话框及资源文件 文章目录 QT的坐标系统,回收机制、菜单栏,工具栏,状态栏,对话框及资源文件1、QT的坐标系统?2、对象模型…

顶帽运算在OpenCv中的应用

项目背景 假如我们拍了一张自拍,想为自己的照片添加一个酷炫的火星飞舞的效果,素材库中正好有一张火焰的照片,如果想去除图中的火焰,只保留火星效果,可以使用顶帽子算法 图片中的火星部分正好属于比周围亮一些的斑块…

知虾皮Shopee:东南亚最受欢迎的电子商务平台

在如今数字化时代,电子商务平台成为人们购物的首选方式。Shopee作为东南亚地区最受欢迎的电子商务平台,通过其多样化的商品、便捷的购物体验和创新的商业模式,迅速在该地区占据了重要地位。本文将详细介绍Shopee的特点和优势,以及…

《作家天地》期刊投稿邮箱投稿方式

《作家天地》是国家新闻出版总署批准的正规文学刊物。对各种流派的作品兼收并蓄,力求题材、形式、风格多样化,适用于发表高品质文学学术作品,科研机构的专家学者以及高等院校的师生等。具有原创性的学术理论、工作实践、科研成果和科研课题及…

spug发布问题汇总记录

问题导览 1. [vite]: Rollup failed to resolve import "element-plus" from "src/main.js". 项目框架简介 vue3viteelement-plus 解决方案 - 1. 配置淘宝镜像源:npm config set registry https://registry.npm.taobao.org/ - 2. npm inst…

20240104确认AIO-3399J的开发板适配ov13850摄像头不支持4K分辨率录像

20240104确认AIO-3399J的开发板适配ov13850摄像头不支持4K分辨率录像 2024/1/4 13:23 开发板:Firefly的AIO-3399J【RK3399】 SDK:rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBrick】 Android11.0.tar.bz2.ab Android1…

Android kotlin build.gradle.kts配置

1. 添加 maven 仓库 1. 1. settings配置 1. 1.1. settings.gradle repositories {maven {url https://maven.aliyun.com/repository/public/}mavenCentral() }1. 1.2. settings.gradle.kts repositories {maven {setUrl("https://maven.aliyun.com/repository/public/…

Ubuntu 22.04/20.04 安装 SSH

OpenSSH 是安全远程通信的重要工具,提供了一种安全的方式来访问和管理服务器。对于那些计划在 Ubuntu 22.04 Jammy Jellyfish 或其较旧的稳定版本的 Ubuntu 20.04 Focal Fossa 上安装 SSH 并启用它的人来说,了解其功能和优势至关重要。 OpenSSH的主要特…

技术阅读周刊第十二期

年前最后一篇推送,提前祝大家新年快乐。 技术阅读周刊,每周更新。 历史更新 20231201:第八期20231215:第十期20231122:第十一期 Deno vs Go: Native hello world performance | Tech Tonic URL: https://medium.com/de…

TSINGSEE青犀智能分析网关V4视频智能分析在智慧幼儿园中的应用

一、背景需求 在科技浪潮的推动下,智慧化监管已然成为幼儿园管理发展的必然趋势。通过引入尖端技术手段,智慧幼儿园监管解决方案不仅显著提升了管理效率,更为孩子们的安全与健康筑起一道坚实的屏障。为了全方位守护幼儿的平安,幼…

java设计模式学习之【策略模式】

文章目录 引言策略模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用计算示例代码地址 引言 设想你正在玩一个策略游戏,每一个决策都会导致不同的游戏结局。同样地,在软件开发中,我们常常需要根据不同的场景或条件选择不同…

【c++————————构造函数和析构函数】

【c————————构造函数和析构函数】 欢迎阅读新一期的c模块————构造函数和析构函数 ✒️个人主页:-Joker- 🏷️专栏:C 📜代码仓库:c_code 🌹🌹欢迎大佬们的阅读和三连关注&#xff0c…

如何配置Zabbix告警邮件通知并基于GPT提供解决方案?

一、概述 时间来到2023年末,距离Open AI发布GPT-3.5,首次向公众推出ChatGPT已经整整过去了一年。如今,以ChatGPT为代表的人工智能模型已然被应用众多领域,当然也包括IT运维。在IT运维中,通过对接运维监控平台&#xff…

人生重开模拟器

前言: 人生重开模拟器是前段时间非常火的一个小游戏,接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。 网页版游戏: 人生重开模拟器 (ytecn.com) 1.实现一个简化版的人生重开模拟器 (1) 游戏开始的时…

【JAVA】深入了解 Java 中的 DelayQueue

🍎个人博客:个人主页 🏆个人专栏: JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 Java中的DelayQueue是一个强大的工具,常用于处理需要延迟执行的任务或具有过期时间的元素。通过实现Delayed接口&#x…

MySQL慢查询日志分析(慢查询日志)

一、背景   MySQL的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应的时间超过阈值的语句,具体指运行时间超过long_query_time(默认是10秒)值的SQL,会被记录到慢查询日志中。 &em…

CAAC无人机操作证考证报名流程及白底证件照片制作方法

在这个无人机技术日新月异的时代,拥有一张CAAC民用无人机操作证不仅意味着你能够合法地在天空翱翔,也象征着你对飞行技术的尊重和对规章制度的遵守。如果你怀揣着成为无人机飞行员的梦想,那么,让我们一起揭开CAAC民用无人机操作证…

Docker安装Elasticsearch,kibana,ik分词器

安装elasticsearch 下载elasticsearch,查看版本:Elasticsearch Guide [8.11] | Elastic docker pull elasticsearch:7.17.16 查看镜像是否下载成功 docker images 创建网络,因为需要部署kibana容器,要让es和kibana容器互联 …

由浅入深理解C#中的事件

目录 本文较长,给大家提供了目录,可以直接看自己感兴趣的部分。 前言有关事件的概念示例​ 简单示例​ 标准 .NET 事件模式​ 使用泛型版本的标准 .NET 事件模式​ 补充总结 参考前言 前面介绍了C#中的委托,事件的很多部分都与委托…