It seems the
imresize implemented in
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
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))
- Use OpenCV.
im2 = cv2.resize(im, (im.shape/2, im.shape/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