Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add another datatype to check if it's easy to add another datatype (#4)
# 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
- Loading branch information