基于nuscence激光3D目标检测3Dbox可视化

nuScenes是一个大规模自动驾驶数据集,它提供了丰富的传感器数据,包括摄像头、激光雷达、雷达等,是研究自动驾驶技术、3D感知和场景理解的宝贵资源。本文将引导你如何利用nuScenes的数据和Open3D库,将在nuScenes数据集上获得的检测结果转化为直观的3D可视化效果,从而更好地理解和分析算法性能。

使用Open3D可视化

加载检测额的结果

def loadResults(file_name):
    with open(file_name, 'rb') as f:
        ans = json.load(f)
    return ans

将检测结果转化成角点

def get_object_corners(obj):
    from pyquaternion import Quaternion
    orientation=Quaternion(obj["rotation"])
    center = [obj["translation"][0], obj["translation"][1], obj["translation"][2]]
    size = [obj["size"][0], obj["size"][1], obj["size"][2]]
    w, l, h = size

    x_corners = l / 2 * np.array([1,  1,  1,  1, -1, -1, -1, -1])
    y_corners = w / 2 * np.array([1, -1, -1,  1,  1, -1, -1,  1])
    z_corners = h / 2 * np.array([1,  1, -1, -1,  1,  1, -1, -1])
    corners = np.vstack((x_corners, y_corners, z_corners))

    # Rotate
    corners = np.dot(orientation.rotation_matrix, corners)

    # Translate
    x, y, z = center
    corners[0, :] = corners[0, :] + x
    corners[1, :] = corners[1, :] + y
    corners[2, :] = corners[2, :] + z
    return np.transpose(corners)

将结果着色j

def render_3dbbox(points, color):
    lines = [[0, 1], [1, 2], [2, 3], [3, 0], 
             [4, 5], [5, 6], [6, 7], [7, 4],
             [0, 4], [1, 5], [2, 6], [3, 7]]
    colors = [color for i in range(len(lines))]
    line_set = o3d.geometry.LineSet()
    line_set.points = o3d.utility.Vector3dVector(points)
    line_set.lines = o3d.utility.Vector2iVector(lines)
    line_set.colors = o3d.utility.Vector3dVector(colors)
    return line_set

结果可视化

源码下载:

关注我的公众号auto_driver_ai(Ai fighting), 第一时间获取更新内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值