image-rs / imageproc

Image processing operations
MIT License
744 stars 146 forks source link

Switch `imageproc::Rect` to `image::Rect` #645

Open ripytide opened 4 months ago

ripytide commented 4 months ago

Related to #638

ripytide commented 3 months ago

Continuing the discussion from #647:

All of the draw_x functions accept inputs that may be extend outside the image and then only draw the points that are within the image bounds. This is a bit odd if you think of the image as a finite canvas but makes more sense for the original use case for several of these functions which was to annotate photos/video frames with areas of interest identified using these images. I’d rather keep the consistency between these functions so won’t merge this PR.

May I ask what the use-cases are for annotating images in areas outside of the image in photo/video frames as that does seem a bit odd to me.

ripytide commented 3 months ago

Since the crop() function needs an unsigned rectangle input it might be worth creating another Rect and possibly naming them differently so functions can choose which Rect type they want to take as parameters.

Something like:

struct RectI {
x: i32,
...
}

struct RectU {
x: u32,
...
}
ripytide commented 3 months ago

Or maybe simply asking upstream to make their Rect type generic that way we can have Rect<u32> and Rect<i32>.