At the moment, the
ImageSegment class inherits it’s
save() method from
Image. However, the
Image save function looks like the below.
def save(self, fn:PathOrStr): "Save the image to `fn`." x = image2np(self.data*255).astype(np.uint8) PIL.Image.fromarray(x).save(fn)
self.data*255 section is problematic for saving a mask (
ImageSegment). It assumes the image data being saved was normalized by dividing by 255 (values 0 to 1). Mask data is not normalized, and therefore should not be multiplied by 255 to denormalize it. I propose a new
save() method gets created in the
ImageSegment class that fixes this.
def save(self, fn:PathOrStr): "Save the image segment to `fn`." x = image2np(self.data).astype(np.uint8) PIL.Image.fromarray(x).save(fn)
I have created a fork of this and implemented it myself here https://github.com/mjhough/fastai/tree/img-segment-save-fix, however, I have no tests. There doesn’t seem to be an
Image.save() test and I am not familiar with Python tests. Is there a way I should write this test? And where should it go?