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), 第一时间获取更新内容。