It seems the imresize
implemented in PIL
/scipy.misc
only works for uint8 images
>>> import scipy.misc
>>> im = np.random.rand(100,200)
>>> print im.dtype
float64
>>> im2 = scipy.misc.imresize(im, 0.5)
>>> print im2.dtype
uint8
Is there any way around this? I'd like to deal HDR images and therefore needs to deal with float64
or float32
images. Thanks.
Thanks to cgohlke's comment. Below are two alternatives I found that works for float-number images.
For single-channel images: im2 = scipy.ndimage.interpolation.zoom(im, 0.5)
For 3-channel images: im2 = scipy.ndimage.interpolation.zoom(im, (0.5, 0.5, 1.0))
im2 = cv2.resize(im, (im.shape[1]/2, im.shape[0]/2))
This works for both single-channel and 3-channel images. Note that one needs to revert the shape order in second parameter.
you could also use the mode='F' option in the imresize function
imresize(image, factor, mode='F')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With