体元法--体积计算

文章目录

    • 环境:
    • 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 npdef 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] = Truecount = np.sum(flags)print("计算完成!")v = d * d * d * countprint("当前有效体元为:", count)print("树冠体积为:", v)result = [pc]draw_point_cloud(result, False)input("按任意键继续...")if __name__ == "__main__":main()

3.1 可视化

在这里插入图片描述


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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS 小组件开发

iOS14之后Apple引入了新的WidgetKit,舍弃了原有额TodayExtension。 开发准备: 新的WidgetExtension只能通过SwiftUI进行开发; Widget有三种尺寸:systemSmall、 systemMedium、systemLarge,三种尺寸对应固定的UI类型布…

0基础学java-day23(反射)

一、反射机制 1、一个需求引出反射 package com.hspedu.reflection.question;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; …

Redis(二)数据类型

文章目录 官网备注十大数据类型StringListHashSetZSetBitmapHyperLogLog:GEOStreamBitfield 官网 英文:https://redis.io/commands/ 中文:http://www.redis.cn/commands.html 备注 命令不区分大小写,key区分大小写帮助命令help…

蓝牙物联网的安全漏洞分析

在当前的网络应用中,物联网具有对物品多样性、低成本、低速率、短距离等特征的泛在需求,这类需求主要通过蓝牙等低速网络协议实现。蓝牙是一种短距离通信开放标准,利用嵌入式芯片实现通讯距离在 10 m100m之间的无线连接。蓝牙的设计目标在于通…

编程语言的未来:飞速发展的时代里有不可或缺的你

随着科技的飞速发展,编程语言在计算机领域中扮演着至关重要的角色。它们是软件开发的核心,为程序员提供了与机器沟通的桥梁。那么,在技术不断进步的未来,编程语言的走向又将如何呢? 编程语言的发展趋势 人工智能和机器…

Vue实现JSON字符串格式化编辑器组件

相信很多同学都用过网上的在线JSON格式化工具来将杂乱的JSON数据转换成易于我们阅读和编辑的格式。那么,你有没有想过自己动手实现一个这样的工具呢?今天,我将介绍如何使用Vue.js来构建一个简单的JSON格式化工具。 功能简述 支持格式化JSON字…

2023 年中国高校大数据挑战赛赛题B DNA 存储中的序列聚类与比对-解析与参考代码

题目背景:目前往往需要对测序后的序列进行聚类与比对。其中聚类指的是将测序序列聚类以判断原始序列有多少条,聚类后相同类的序列定义为一个簇。比对则是指在聚类基础上对一个簇内的序列进行比对进而输出一条最有 可能的正确序列。通过聚类与比对将会极大…

从0搭建github.io网页

点击跳转到🔗我的博客文章目录 从0搭建github.io网页 文章目录 从0搭建github.io网页1.成果展示1.1 网址和源码1.2 页面展示 2.new对象2.1 创建仓库 3.github.io仓库的初始化3.1 千里之行,始于足下3.2 _config.yml3.3 一点杂活 4.PerCheung.github.io.p…

Nginx多域名部署多站点

目录 1.修改配置文件nginx.conf 2. 修改hosts文件 1.修改配置文件nginx.conf 在配置文件的 server_name 处修改成自己需要的域名,然后保存退出 j 查看语法是否错误,然后重启nginx nginx -t # 查看语法是否正确 systemctl restart nginx # 重启nginx …

ansible 配置jspgou商城上线(MySQL版)

准备环境 准备两台纯净的服务器进行,在实验之前我们关闭防火墙和selinux systemctl stop firewalld #关闭防火墙 setenforce 0 #临时关闭selinux hosts解析(两台服务器都要去做) [rootansible-server ~]# vim /etc/hosts 10.31.162.24 ansible-ser…

【算法】利用分治思想解算法题:快排、归并、快速选择实战(C++)

1. 分治思想 介绍 分治法将问题划分成多个相互独立且相同或类似的子问题,然后递归地解决每个子问题,并将结果合并以得到原始问题的解。 分治思想通常包含以下三个步骤: 分解:将原始问题划分成多个规模较小、相互独立且类似的子…

Gradle系列之大锅菜汇总

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。 😊 座右铭:不…