annotate3d opimage2d → image2dimport 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 を渡すと、両端が隠れている辺を破線にする。
ValueError bounds の形 / min > max、角がカメラの後ろ。
手順: bounds から 8 つの角 (x_i, y_j, z_k)(i, j, k ∈ {min, max})を作り、
まとめて射影(annotate3d_project と同じ慣習)。12 辺を
annotate._aa_polyline で描く。辺の両端が 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 の不正。角が画像の外に出るのはエラーに
しない(線は枠外まで引かれ、見た目は切れる)。
注意: 軸平行(世界座標に沿った)箱のみ。回転した箱(smallest_box3 の
corners)を描くには、8 角を自分で射影(annotate3d_project)して 2-D の
annotate 線描画で結ぶ。
py -3.11 examples_3d/annotate3d_figure.pyimage2d を入力に取れる)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 operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.