python加载点云pcd和json文件

#! /usr/bin/env python3
# -*-coding:utf-8-*-
#for reading pcd and json from task3 result files
import pcl
import open3d as o3d
from pandaset import DataSet, geometry
import numpy as np
from pyquaternion import Quaternion
import pandas
from pathlib import Path
import json
from math import tanh
import os
def load_json_from_file(path):
    nusc_annos = []
    res_path = str(Path(path))
    with open(res_path, "r") as f:
        nusc_annos = json.load(f)
    return nusc_annos
def load_pcd_from_file(path):
    data = pcl.load_XYZI(path).to_array()[:,:4]
    dataframe = pandas.DataFrame(data)
    dataframe = dataframe.dropna()
    dataframe = dataframe.loc[~(dataframe==0).all(axis=1)]
    pcd_array = np.array(dataframe, dtype=np.float32)
    zero_col = np.zeros(pcd_array.shape[0], dtype=np.float32)
    pcd_array = np.column_stack((pcd_array,zero_col))
    pcd_array[:,3] = np.tanh(pcd_ar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实时点数据转深度图需要使用到相机的内参矩阵和外参矩阵,以及点数据的坐标系和深度图像的坐标系之间的变换关系。如果你已经有了这些信息,可以使用 Python 中的 NumPy 和 OpenCV 库来实现实时点数据转深度图的功能。 以下是一个示例代码,假设你已经安装了 NumPy 和 OpenCV 库: ```python import numpy as np import cv2 # 相机内参矩阵 K = np.array([[fx, 0, cx], [0, fy, cy], [0, 0, 1]]) # 相机外参矩阵 R = np.array([[r11, r12, r13], [r21, r22, r23], [r31, r32, r33]]) t = np.array([tx, ty, tz]) T = np.hstack((R, t.reshape(3, 1))) P = np.dot(K, T) # 点数据坐标系到深度图像坐标系的变换矩阵 M = np.array([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]]) # 循环读取点数据并转换为深度图像 while True: # 读取点数据 pcd_data = np.loadtxt('input.pcd', skiprows=10) # 将点数据转换为深度图像 pcd_data_homo = np.hstack((pcd_data, np.ones((pcd_data.shape[0], 1)))) pcd_data_cam = np.dot(P, pcd_data_homo.T).T pcd_data_img = np.dot(M, pcd_data_cam.T).T[:, :3] / pcd_data_cam[:, 2:] depth_img = np.zeros((h, w), dtype=np.float32) for i in range(pcd_data_img.shape[0]): x, y, z = pcd_data_img[i] if x >= 0 and x < w and y >= 0 and y < h and z > 0: depth_img[int(y), int(x)] = z # 显示深度图像 cv2.imshow('depth', depth_img) cv2.waitKey(1) ``` 这里假设你已经有了相机的内参矩阵和外参矩阵,以及点数据的坐标系和深度图像的坐标系之间的变换关系,分别存储在 K、R、t 和 M 矩阵中。代码中的循环读取点数据并转换为深度图像的过程可以实现实时转换。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值