From e00703d24d632814ab20812bac6964d6781e68b5 Mon Sep 17 00:00:00 2001 From: Kinch Date: Mon, 9 Oct 2023 17:55:47 +0200 Subject: [PATCH] rr: migrate to 0.9.0 --- lua/rr.example.lua | 18 +++------- lua_modules/rerun_lua/src/lib.rs | 58 ++++++++++++++++++-------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/lua/rr.example.lua b/lua/rr.example.lua index 858921e..c543f99 100644 --- a/lua/rr.example.lua +++ b/lua/rr.example.lua @@ -2,12 +2,7 @@ local rr = require("rerun_lua") function bbox(ms_ocr_bbox) - return rr.rect_xyxy { - ms_ocr_bbox[1], - ms_ocr_bbox[2], - ms_ocr_bbox[5], - ms_ocr_bbox[6], - } + return rr.text_object(ms_ocr_bbox) end function paragraphs(ms_form_result) @@ -16,8 +11,7 @@ function paragraphs(ms_form_result) for _, region in ipairs(paragraph.boundingRegions) do table.insert(result, { text = paragraph.content, - page = region.pageNumber, - bbox = bbox(region.polygon) + bbox = region.polygon }) end end @@ -30,8 +24,7 @@ function lines(ms_form_result) for _, line in ipairs(page.lines) do table.insert(result, { text = line.content, - page = page.pageNumber, - bbox = bbox(line.polygon) + bbox = line.polygon }) end end @@ -46,8 +39,7 @@ function words(ms_form_result) for _, word in ipairs(page.words) do table.insert(result, { text = word.content, - page = page.pageNumber, - bbox = bbox(word.polygon) + bbox = word.polygon }) end end @@ -58,7 +50,7 @@ end local ms_form = rr.json("/Users/tbr/Desktop/ms_form.json") local record = rr.recording("example-2") -record:image("54-1", "/Users/tbr/Desktop/00054-1.png") +--record:image("54-1", "/Users/tbr/Desktop/00054-1.png") record:image("54-0", "/Users/tbr/Desktop/00054-0.png") record:text_objects("54-0/ms-forms/paragraphs",paragraphs(ms_form)) record:text_objects("54-0/ms-forms/lines",lines(ms_form)) diff --git a/lua_modules/rerun_lua/src/lib.rs b/lua_modules/rerun_lua/src/lib.rs index da3dacf..a685ede 100644 --- a/lua_modules/rerun_lua/src/lib.rs +++ b/lua_modules/rerun_lua/src/lib.rs @@ -4,16 +4,18 @@ use std::path::PathBuf; use mlua::{AnyUserData, MetaMethod, UserData, UserDataRef}; use mlua::prelude::*; -use rerun::{Boxes2D, Image, MaybeOwnedComponentBatch, RecordingStream, RecordingStreamBuilder}; -use rerun::components::{Text}; -use rerun::datatypes::{TensorData, Vec4D}; +use rerun::{Boxes2D, Image, RecordingStream, RecordingStreamBuilder}; +use rerun::datatypes::{TensorData, Vec2D, Vec4D}; + +type TextBox = [f32;8]; #[derive(Debug)] pub struct TextObject { pub text: String, - pub bbox: Boxes2D, + pub bbox: TextBox, } + impl UserData for TextObject { fn add_methods<'lua, M: LuaUserDataMethods<'lua, Self>>(methods: &mut M) { methods.add_meta_method(MetaMethod::ToString, |_lua, this, _:()| { @@ -25,10 +27,10 @@ impl UserData for TextObject { impl<'lua> FromLua<'lua> for TextObject { fn from_lua(value: LuaValue<'lua>, lua: &'lua Lua) -> LuaResult { let table = value.as_table().ok_or(LuaError::RuntimeError("invalid args for text_object".to_string()))?; - let rect = table.get::<_, UserDataRef>("bbox")?.clone(); + let rect = table.get::<_, TextBox>("bbox")?; Ok(TextObject { text: table.get("text")?, - bbox: rect + bbox: rect }) } } @@ -48,13 +50,11 @@ fn recording(lua: &Lua, name: String) -> LuaResult { lua.create_any_userdata(stream) } -fn rect_xyxy(lua: &Lua, points: [f32;4]) -> LuaResult { - let mut box2d = Boxes2D::from_mins_and_sizes( - [(points[0], points[1])], - [(points[2] - points[0], points[3] - points[1])], - ); - box2d.labels = Some(vec![Text::from("A Label")]); - lua.create_any_userdata(box2d) +fn text_object(lua: &Lua, points: TextBox) -> LuaResult { + Ok(TextObject { + text: "".to_string(), + bbox: points, + }) } fn register_bindings(lua: &Lua) -> LuaResult<()> { @@ -75,17 +75,25 @@ fn register_bindings(lua: &Lua) -> LuaResult<()> { }); reg.add_method("text_objects", |lua, this, (entity_path, objects): (String, Vec)| { - // let rects: Vec = objects.into_iter() - // .map(|t| t.bbox) - // .collect(); - - for text_object in objects { - this.log_timeless( - entity_path.clone(), - &text_object.bbox - ).map_err(|error| LuaError::RuntimeError(format!("Could not send message {error}")))?; - } - + let mins: Vec = objects + .iter() + .map(|text_object| &text_object.bbox) + .map(|bbox| Vec2D([bbox[0], bbox[1]]) ) + .collect(); + let sizes: Vec = objects + .iter() + .map(|text_object| &text_object.bbox) + .map(|bbox| Vec2D([bbox[2] - bbox[0], bbox[7] - bbox[1]]) ) + .collect(); + let labels: Vec = objects + .iter() + .map(|text_object| text_object.text.clone()) + .collect(); + let boxes2d = Boxes2D::from_mins_and_sizes(mins, sizes) + .with_labels(labels) + ; + this.log_timeless(entity_path, &boxes2d) + .map_err(|error| LuaError::RuntimeError(format!("Could not send message {error}")))?; Ok(()) }) })?; @@ -98,6 +106,6 @@ fn rerun_lua(lua: &Lua) -> LuaResult { let exports = lua.create_table()?; exports.set("recording", lua.create_function(recording)?)?; exports.set("json", lua.create_function(json)?)?; - exports.set("rect_xyxy", lua.create_function(rect_xyxy)?)?; + exports.set("text_object", lua.create_function(text_object)?)?; Ok(exports) }