PIL/scipy.misc中的imresize只适用于uint8图像?有其他选择吗?

2024-09-28 03:25:29 发布

您现在位置:Python中文网/ 问答频道 /正文

似乎在PIL/scipy.misc中实现的imresize只适用于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图像。谢谢。


Tags: 图像importpilnprandomscipymiscprint
2条回答

感谢cgohlke的评论。下面是我发现的两个适用于浮点数图像的选项。

  1. 使用scipy.ndimage.interpolation.zoom

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

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

  1. 使用OpenCV。

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

这对单通道和三通道图像都有效。注意,需要在第二个参数中还原形状顺序。

您也可以在imresize函数中使用mode='F'选项

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

相关问题 更多 >

    热门问题