Porter、Snowball与Lancaster词干提取器实战选型指南
2026/6/10 14:32:14
PythonAPI/examples/draw_skeleton.py
行人骨骼(Skeleton)可视化示例,用于:
适用于人体姿态估计、动作捕捉、行人行为分析等研究。
carla_draw_skeleton
CarlaSyncMode:同步模式上下文管理器world.tick()与传感器数据对齐withCarlaSyncMode(world,camera,fps=30)assync_mode:snapshot,image_rgb=sync_mode.tick(timeout=5.0)✅ 这是 CARLA多传感器同步的最佳实践。
bones=ped.get_bones()# 获取骨骼结构fori,boneinenumerate(bones.bone_transforms):boneIndex[bone.name]=i points.append(bone.world.location)# 3D 世界坐标get_bones()返回包含68 个骨骼节点的层级结构(含名称、局部/世界坐标)crl_hips__C(臀部中心)crl_spine__C(脊柱)crl_hand__L(左手)crl_Head__C(头部)💡 这些名称对应CARLA 内置行人模型的骨骼绑定。
defget_screen_points(camera,K,image_w,image_h,points3d):# 1. 构建世界→相机变换矩阵world_2_camera=np.array(camera.get_transform().get_inverse_matrix())# 2. 将 3D 点转为齐次坐标 (x,y,z,1)points=np.array([...]).reshape(-1,4).T# 3. 变换到相机坐标系points_camera=np.dot(world_2_camera,points)# 4. CARLA 坐标系 → 标准 CV 坐标系: (x,y,z) → (y, -z, x)points=np.array([points_camera[1],-points_camera[2],points_camera[0]])# 5. 相机内参投影 + 归一化points_2d=np.dot(K,points)points_2d=[x/z,y/z,z]draw_skeleton():hips → spine,spine → neck),调用draw_line_on_buffer绘制绿色骨架线draw_points_on_buffer():✅ 支持任意骨骼拓扑,只需修改
boneIndex映射关系。
ped.blend_pose(math.sin(blending))# 混合行走/站立姿态controller.go_to_location(...)# AI 控制器导航x=math.cos(turning)*-3y=math.sin(turning)*3trans.location=ped.location+(x,y,2)trans.rotation.yaw=-360*(turning/(2π))# 保持面向行人camera.set_transform(trans)get_image_as_array():draw_image():# pool.apply_async(write_image, (snapshot.frame, "ped", buffer))可扩展为实时保存带骨骼标注的视频帧| 应用 | 如何利用本脚本 |
|---|---|
| 2D 人体姿态估计 | 生成带精确 2D 关键点标注的图像数据集 |
| 3D 人体重建 | 结合深度图 + 3D 骨骼坐标训练模型 |
| 行人行为分析 | 分析blend_pose参数与动作的关系 |
| 虚拟试衣/AR | 将虚拟服装绑定到骨骼节点 |
完整的骨骼拓扑定义
坐标系无缝转换
(x,y,z) → (y,-z,x)转换纯客户端渲染
该脚本是 CARLA行人骨骼可视化的标杆示例,展示了:
它是构建人体姿态估计数据集或行人交互系统的理想起点,尤其适合需要精确关节标注的计算机视觉任务。