imils in PIL / scipy.misc仅适用于uint8图像?任何替代品?

时间:2014-11-07 03:30:23

标签: python numpy scipy python-imaging-library pillow

imresize / PIL中实施的scipy.misc似乎仅适用于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

这有什么办法吗?我想处理HDR图像,因此需要处理float64float32图像。感谢。

2 个答案:

答案 0 :(得分:11)

感谢cgohlke的评论。以下是我发现的两种替代方案,适用于浮点数图像。

  1. 使用scipy.ndimage.interpolation.zoom
  2. 对于单通道图片:im2 = scipy.ndimage.interpolation.zoom(im, 0.5)

    对于3通道图像:im2 = scipy.ndimage.interpolation.zoom(im, (0.5, 0.5, 1.0))

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

      这适用于单通道和3通道图像。请注意,需要在第二个参数中恢复形状顺序。

答案 1 :(得分:1)

你也可以使用模式=' F' imresize功能中的选项

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