首页 > 其他分享 >将自己的数据转为Randla-net支持的格式

将自己的数据转为Randla-net支持的格式

时间:2023-12-16 09:56:23浏览次数:23  
标签:sub labels Randla pc file path 格式 net folder

 

from sklearn.neighbors import KDTree
from os.path import join, exists, dirname, abspath
import numpy as np
import os, glob, pickle
import sys

BASE_DIR = dirname(abspath(__file__))
ROOT_DIR = dirname(BASE_DIR)
sys.path.append(BASE_DIR)
sys.path.append(ROOT_DIR)
from helper_ply import write_ply
from helper_tool import DataProcessing as DP

grid_size = 0.5  #我的点云数据集比较密,所以下采样间隔取大一点
dataset_path = '/data/semantic3d/original_data'
original_pc_folder = join(dirname(dataset_path), 'original_ply')
sub_pc_folder = join(dirname(dataset_path), 'input_{:.3f}'.format(grid_size))
os.mkdir(original_pc_folder) if not exists(original_pc_folder) else None
os.mkdir(sub_pc_folder) if not exists(sub_pc_folder) else None

for pc_path in glob.glob(join(dataset_path, '*.txt')):
    print(pc_path)
    # file_name = pc_path.split('/')[-1][:-4]
    file_name=os.path.basename(pc_path)[:-4]

    # check if it has already calculated
    if exists(join(sub_pc_folder, file_name + '_KDTree.pkl')):
        continue

    #直接使用numpy加载txt格式的点云文件
    pc=np.loadtxt(pc_path)

    #我的数据集中训练和测试集都是x,y,z,r,g,b,label的存储格式
    labels=pc[:,-1].astype(np.uint8)

    full_ply_path = join(original_pc_folder, file_name + '.ply')

    #  Subsample to save space
    sub_points, sub_colors, sub_labels = DP.grid_sub_sampling(pc[:, :3].astype(np.float32),
                                                              pc[:, 3:6].astype(np.uint8), labels, 0.01)
    sub_labels = np.squeeze(sub_labels)

    write_ply(full_ply_path, (sub_points, sub_colors, sub_labels), ['x', 'y', 'z', 'red', 'green', 'blue', 'class'])

    # save sub_cloud and KDTree file
    sub_xyz, sub_colors, sub_labels = DP.grid_sub_sampling(sub_points, sub_colors, sub_labels, grid_size)
    sub_colors = sub_colors / 255.0
    sub_labels = np.squeeze(sub_labels)
    sub_ply_file = join(sub_pc_folder, file_name + '.ply')
    write_ply(sub_ply_file, [sub_xyz, sub_colors, sub_labels], ['x', 'y', 'z', 'red', 'green', 'blue', 'class'])

    search_tree = KDTree(sub_xyz, leaf_size=50)
    kd_tree_file = join(sub_pc_folder, file_name + '_KDTree.pkl')
    with open(kd_tree_file, 'wb') as f:
        pickle.dump(search_tree, f)

    proj_idx = np.squeeze(search_tree.query(sub_points, return_distance=False))
    proj_idx = proj_idx.astype(np.int32)
    proj_save = join(sub_pc_folder, file_name + '_proj.pkl')
    with open(proj_save, 'wb') as f:
        pickle.dump([proj_idx, labels], f)

 

标签:sub,labels,Randla,pc,file,path,格式,net,folder
From: https://www.cnblogs.com/yhlx125/p/17904524.html

相关文章

  • 初中英语优秀范文100篇-028How to Be a Good Internet User-如何成为一名合格的网民
    PDF格式公众号回复关键字:SHCZFW028记忆树1Withthedevelopmentofthetechnology,mostofusareabletousetheInternet.翻译随着科技的发展,我们大多数人都能够使用互联网。简化记忆互联网句子结构这句话的结构是:时间状语从句(Withthedevelopmentofthet......
  • .NET微信网页开发之通过UnionID机制解决多应用用户帐号统一问题
    背景随着公司微信相关业务场景的不断拓展,从最初的一个微信移动应用、然后发展成微信公众号应用、然后又有了微信小程序应用。但是随着应用的拓展,如何保证相同用户的微信用户在不同应用中登录的同一个账号呢?今天的主题就来了.NET微信网页开发之通过UnionID机制解决多应用用户帐号......
  • 访问上传至.Net服务器本地的文件。
    1porgame.cs添加以下代码//使用默认静态文件目录wwwrootapp.UseDefaultFiles();app.UseStaticFiles();2在项目跟目录下创建wwwroot文件,需要提供访问的视频放在这个文件夹下面!!!注意,要区分大小写,我之前访问不了,就是创建的是WWWRoot.3访问方式!!!注意是服务器地址+......
  • Kubernetes v1.29 新特性一览
    新特性一览大纲一、Core组件增强调度器增强在Kubernetesv1.29中,Core组件经历了一系列增强,其中一个重要的改进是调度器的增强。这些增强使得调度器能够更加智能和高效地管理容器的调度和分配。通过引入新的调度算法和策略,调度器能够更好地适应不同的资源需求和约束条件,提高集群的容......
  • M3U8 格式:为什么直播回放都用这个格式?
    M3U文件是一种纯文本文件,可以指定一个或多个多媒体文件的位置。它的设计初衷是为了播放音频文件,但后来越来越多的用于播放视频文件列表。而M3U8则是用UTF-8编码的M3U。M3U、M3U8文件都是苹果公司使用的HLS(HTTPLiveStreaming)协议的基础。在实际应用场景中,由于HLS/M3......
  • Modbus和Profinet通信协议简介
    Modbus和Profinet通信协议简介Modbus是一种通信协议,广泛应用于工业自动化领域。它通过串口或以太网等物理介质实现设备间的数据交换。Modbus采用主从结构,主设备负责发起通信请求,从设备则负责响应请求并提供数据。Modbus具有简单、可靠、易于实现的特点,被广泛用于传感器、执行器、P......
  • 机器学习ml.net例子笔记1
    详细内容参考: ml.net例子笔记1(yuque.com)  https://www.yuque.com/wushifengcn/kb/yb6xa6d01zr3tdit 如下是大纲1ml.net例子概要二元分类多类分类建议回归时间序列预测异常情况检测聚类分析排名计算机视觉跨领域......
  • net8获取泛微token以及访问api示例
    工作中涉及到调用泛微的场景,官方的示例又臭又长,抽空用NET8简化了写法,为了简化http访问,用了Flurl.Http这个库。在座各位大佬,我们直接就看代码了 usingSystem.Security.Cryptography;usingSystem.Text.Json;usingFlurl.Http;//请按照官方内容做好初始化工作https://e-c......
  • C++读取FY卫星遥感图像(HDF格式)
    转一下我自己的博客网上找了大概2周,艰难的实现了C++读取HDF图像,CSDN吃相真难看,好多文章都要会员。。。#include<cstdint>#include<hdf5.h>#include<iostream>#include<matplotlibcpp.h>#include<opencv2/opencv.hpp>#include<opencv2/core/core.hpp>#include<......
  • 像素格式转换
    使用ffmpeg,sws_scale接口做像素格式转换参考雷神:https://blog.csdn.net/leixiaohua1020/article/details/42134965**主要功能:**转换像素格式转换后的数据填充到AVFrame中#include<stdio.h>#include<unistd.h>#include<fstream>#include<iostream>/***最......