Issue
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.
Solution
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))
- Use OpenCV.
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.
Answered By – Ying Xiong
This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0