annotate3d_bbox — 3D annotate3d op

• 数据种类:image2d → image2d

• 调用: import fullseye as fs; fs.ledger.annotate3d_bbox(img, bounds, pose, K, depth=None, color='emphasis', width=1.5, occlusion_tol=0.01, scheme='okabe_ito')(要直接调用实现,import annotate3d; annotate3d.annotate3d_bbox(img, bounds, pose, K, depth=None, color='emphasis', width=1.5, occlusion_tol=0.01, scheme='okabe_ito');从台账取用则 ops3d.get("annotate3d_bbox"))

用法

返回图像(image2d):投影绘制轴对齐 3-D 盒 ((xmin,ymin,zmin),(xmax,ymax,zmax)) 的 12 条棱。

传入 depth 时,把两端都被遮挡的边画为虚线。

Raises

ValueError

bounds 的形状 / min > max、角在相机后方。

步骤: 由 bounds 构造 8 个角 (x_i, y_j, z_k)(i, j, k ∈ {min, max}),一起投影(与 annotate3d_project 相同的约定)。用 annotate._aa_polyline 绘制 12 条边。边的两端都 hidden 则为虚线,只有一端则为实线。

参数:

• bounds: ((xmin, ymin, zmin), (xmax, ymax, zmax)) 的 (2, 3)(object 坐标,有限,各轴 max >= min。允许 max == min 的塌缩箱)。点云则用 points.min(0) / points.max(0),网格则由 V 构造。

• width: 线宽 [px],>= 0.5 的实数。color: 角色名或 RGB。

• depth: 前方距离图像(render3d.render_mesh 的 depth)。occlusion_tol: [0, 1)。

返回值: 绘制后的新图像(float64 [0, 1],不修改输入)。

报错条件: bounds 不是 (2, 3)、非有限、存在 max < min 的轴 / 8 个角中任一个 z <= 1e-9(在相机平面上或后方。箱子包围视点时无法绘制) / 位姿、K、depth 不正确。角超出图像不报错(线会画到框外,看起来被截断)。

注意: 仅限轴对齐(沿 object 坐标轴)的箱子。要绘制旋转的箱子(smallest_box3 的 corners),请自己投影 8 个角(annotate3d_project),再用 2-D 的 annotate 线绘制连接。

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

可运行的示例(实际调用该算子并已验证的样例)

• annotate3d_figure — py -3.11 examples_3d/annotate3d_figure.py

类型可衔接的下一个算子(可接受 image2d 作为输入)

fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade

同类别(annotate3d)

annotate3d_project · annotate3d_arrow · annotate3d_label · annotate3d_scale_bar · annotate3d_axes · annotate3d_measure


*Provenance: annotate3d.py — 3D 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.