Blender 3D 到 2D 转换给出错误的边界框坐标

问题描述 投票:0回答:0

你好堆栈溢出, 我试图将一些 6D 姿势估计算法与自定义数据集一起使用。它进行得很好,但我需要保存标签,也就是图片中显示的边界框的二维坐标。不幸的是它与地面实况数据不匹配,可能我在我的代码中做错了。

首先,我试图重新创建这个 6D 姿势估计算法:https://github.com/Microsoft/singleshotpose

我在搅拌机中生成一个对象,将其质心定位在 (0,0,0),然后为其拍照。我的想法是使用 for 循环轻松生成 1000 张图片,这样我就可以很好地训练模型。这是获取二维边界框的代码

scene = bpy.context.scene
brick = bpy.data.objects['brick']
bb_vertices = [Vector(v) for v in brick.bound_box]
mat = brick.matrix_world
world_bb_vertices = [mat @ v for v in bb_vertices]
co_2d = [world_to_camera_view(scene, scene.camera, v) for v in world_bb_vertices]
co_2d_new = np.delete(co_2d, 2, 1)
co_2d_final = np.reshape(co_2d_new, -1)

#print(co_2d_final)
# [0.44425908 0.54335487 0.3063629  0.47222671 0.29777738 0.6361047
# 0.44198048 0.69735122 0.71110761 0.3768487  0.57061917 0.27459577
# 0.57443786 0.46377245 0.7214548  0.55333525]

最后两步是重塑它,因为我得到了 (x,y,z) 坐标,但不需要 z 坐标。当我使用 opencv 绘制标签时,我得到了这个:

enter image description here

如您所见,这些点与边界框坐标不相似,但看起来有点眼熟。 如果有人能帮助我,我将不胜感激!提前致谢

编辑: 如果有人遇到同样的问题,可以在这里找到答案: https://blender.stackexchange.com/questions/287352/blender-3d-to-2d-transformation-giving-wrong-bounding-box-coordinates

python transformation blender bounding-box pose-estimation
© www.soinside.com 2019 - 2024. All rights reserved.