-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Image FastFormat DataType #1
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks really good overall!
I left some comments as well as I would recommend checking the clippy warnings that you can see here: https://github.com/dora-rs/fastformat/pull/1/files
I think you can merge it after the couple of comments.
Looks very very solid!
…tatype(u8, u16 etc...) + parser for encoding
Thanks for the PR, looks good to me too! Two nits:
|
Hi! Thanks for your review! I will make sure to change those to_ for into_ in the next PR! 😄 |
# Objective This PR adds a new datatype for **BBox** to ensure that everything work well and it's easy to add a new datatype. # Datatypes & Usage - [x] Image ```Rust use crate::image::Image; let flat_image = (0..27).collect::<Vec<u8>>(); let image = Image::new_rgb8(flat_image, 3, 3, Some("camera.test")).unwrap(); let final_image = image.into_bgr8().unwrap(); let final_image_data = final_image.data.as_u8().unwrap(); let expected_image = vec![ 2, 1, 0, 5, 4, 3, 8, 7, 6, 11, 10, 9, 14, 13, 12, 17, 16, 15, 20, 19, 18, 23, 22, 21, 26, 25, 24, ]; assert_eq!(&expected_image, final_image_data); use crate::image::Image; let flat_image = vec![0; 27]; let original_buffer_address = flat_image.as_ptr(); let bgr8_image = Image::new_bgr8(flat_image, 3, 3, None).unwrap(); let image_buffer_address = bgr8_image.as_ptr(); let arrow_image = bgr8_image.into_arrow().unwrap(); let new_image = Image::from_arrow(arrow_image).unwrap(); let final_image_buffer = new_image.as_ptr(); assert_eq!(original_buffer_address, image_buffer_address); assert_eq!(image_buffer_address, final_image_buffer); ``` - [x] BBox ```Rust use crate::bbox::BBox; let flat_bbox = vec![1.0, 1.0, 2.0, 2.0]; let confidence = vec![0.98]; let label = vec!["cat".to_string()]; let bbox = BBox::new_xyxy(flat_bbox, confidence, label).unwrap(); let final_bbox = bbox.into_xywh().unwrap(); let final_bbox_data = final_bbox.data; let expected_bbox = vec![1.0, 1.0, 1.0, 1.0]; assert_eq!(expected_bbox, final_bbox_data); use crate::bbox::BBox; let flat_bbox = vec![1.0, 1.0, 2.0, 2.0]; let original_buffer_address = flat_bbox.as_ptr(); let confidence = vec![0.98]; let label = vec!["cat".to_string()]; let xyxy_bbox = BBox::new_xyxy(flat_bbox, confidence, label).unwrap(); let bbox_buffer_address = xyxy_bbox.data.as_ptr(); let arrow_bbox = xyxy_bbox.into_arrow().unwrap(); let new_bbox = BBox::from_arrow(arrow_bbox).unwrap(); let final_bbox_buffer = new_bbox.data.as_ptr(); assert_eq!(original_buffer_address, bbox_buffer_address); assert_eq!(bbox_buffer_address, final_bbox_buffer); ``` # Quick Fixes - I also improved readability and consistency with Rust formatting, following the guidelines mentioned in [this comment](#1 (comment)). - Fix Arrow Array extraction from Union inside #3 - Fix Dora compatibility (by viewing objects when it's not possible to own them) inside #5 - I improved the structure of the library, with separated packages and with some `features` as one might want to use `fastformat` only with ndarray/arrow. #6
First FastFormat DataType
This PR adds the first FastFormat DataType, the Image DataType, and the project structure.
Representation
An Image is represented by a struct with two Enum Variant with the corresponding data and encoding
Usage
You can then create an Image from flat data:
Features
RoadMap to finish this PR
image.rs
file into submodules for each datatype so everyone can simply add a module likergba16.rs
to add its owm Implementation for theImage Enum