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)
The 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?
Thanks.