¿Imresize en PIL / scipy.misc solo funciona para imágenes uint8? alguna alternativa?

Parece que el imresize implementado en PIL / scipy.misc solo funciona para imágenes uint8

 >>> import scipy.misc >>> im = np.random.rand(100,200) >>> print im.dtype float64 >>> im2 = scipy.misc.imresize(im, 0.5) >>> print im2.dtype uint8 

¿Hay alguna manera de evitar esto? Me gustaría tratar imágenes HDR y, por lo tanto, float64 tratar con imágenes float64 o float32 . Gracias.

Gracias al comentario de cgohlke. A continuación hay dos alternativas que encontré que funcionan para imágenes con números flotantes.

  1. Utilice scipy.ndimage.interpolation.zoom

Para imágenes de un solo canal: im2 = scipy.ndimage.interpolation.zoom(im, 0.5)

Para imágenes de 3 canales: im2 = scipy.ndimage.interpolation.zoom(im, (0.5, 0.5, 1.0))

  1. Utilice OpenCV.

im2 = cv2.resize(im, (im.shape[1]/2, im.shape[0]/2))

Esto funciona para imágenes de un solo canal y de 3 canales. Tenga en cuenta que es necesario revertir el orden de la forma en el segundo parámetro.

También puede usar la opción mode = ‘F’ en la función de imresize

 imresize(image, factor, mode='F')