annotate3d_arrow — 3D annotate3d op

• Data kinds: image2d → image2d

• Call: import fullseye as fs; fs.ledger.annotate3d_arrow(img, p0, p1, pose, K, depth=None, color='emphasis', width=2, head_len=12.0, head_width=9.0, occlusion_tol=0.01, scheme='okabe_ito') (implementation को सीधे call करना हो तो import annotate3d; annotate3d.annotate3d_arrow(img, p0, p1, pose, K, depth=None, color='emphasis', width=2, head_len=12.0, head_width=9.0, occlusion_tol=0.01, scheme='okabe_ito'), registry से लेना हो तो ops3d.get("annotate3d_arrow"))

उपयोग

image (image2d) लौटाता है: 3-D p0 से p1 तक, project किया गया तीर draw करता है।

depth देने पर अगर दोनों सिरे छिपे हों तो dashed line से बनाता है (arrowhead semi-transparent)।

Raises

ValueError

endpoint camera के पीछे हो / 2 points एक ही pixel पर project हों / दोनों सिरे image के बाहर हों, pose या K अमान्य हो।

प्रक्रिया: img की float64 [0, 1] copy बनाई जाती है ((H, W) / (H, W, C), C 1/3/4 है। non-finite या खाली हो तो ValueError), p0, p1 को annotate3d_project वाले उसी projection से pixel में बदला जाता है, और annotate.arrow से p0 के pixel से p1 के pixel तक arrow बनाया जाता है। arrowhead p1 की तरफ़ होता है।

Arguments:

• p0, p1: object coordinates (3,) (finite)। pose 4x4 object→camera या (R, t) है, K 3x3 है (-Z की ओर देखने वाली render3d convention)।

• depth: (H, W) की forward-distance image (render3d.render_mesh का depth)। image जैसा ही shape न हो तो ValueError।

• color: role name (जैसे "emphasis", scheme की palette से resolve होता है) या RGB।

• width: line width [px], 1 या अधिक का integer (1.5 reject होता है)।

• head_len / head_width: arrowhead की लंबाई और चौड़ाई [px]। hidden drawing में इन्हें छोटा किया जाता है ताकि ये arrow की लंबाई के 80 % से ज़्यादा न हों।

• occlusion_tol: [0, 1)।

Return value: drawing वाली नई image (float64, input जैसा ही shape। input बदला नहीं जाता)।

Error की शर्तें (implementation के अनुसार): कोई भी endpoint z <= 1e-9 हो (camera plane पर / पीछे) / 2 points एक ही pixel पर project हों (line of sight पर एक सीध में, लंबाई 1e-9 px से कम) / दोनों सिरे image के बाहर हों (annotate.arrow इसे अस्वीकार करता है, ताकि border से चिपकी गलत line न बने) / pose या K अमान्य हो। केवल एक सिरा image के बाहर हो तो line खींची जाती है (वह frame के बाहर की ओर जाती है और frame पर कटी हुई दिखती है)।

उपयोग: render3d.render_mesh की image पर "यह vertex यह है" दिखाने के लिए। लंबाई को संख्या में दिखाना हो तो annotate3d_measure, text जोड़ना हो तो annotate3d_label।

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• annotate3d_figure — py -3.11 examples_3d/annotate3d_figure.py

वे अगले ops जिनसे type जुड़ता है (image2d को input के रूप में लेते हैं)

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

इसी category के (annotate3d)

annotate3d_project · annotate3d_label · annotate3d_scale_bar · annotate3d_axes · annotate3d_bbox · annotate3d_measure


*Provenance: annotate3d.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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