你如何在python中读取32位TIFF图像?

时间:2016-11-22 20:59:43

标签: python image-processing matplotlib tiff 32-bit

我想用python读取32位浮点图像文件来进行图像分析。

我试过了

import matplotlib.pyplot as plt

im = plt.imread('path_to_file.tif')

但是,这只将数据读取为8位整数值。有没有办法为imread()提供正确的数据类型?

- 嗯,以前开箱即用的是16位TIFF文件,但没有使用32位浮点数。

3 个答案:

答案 0 :(得分:2)

我在尝试读取单通道32位整数图像时遇到了类似的问题。我想出的解决方案是:

from skimage import io
im = io.imread('path_to_file.tif')

如果您的计算机上安装了OpenCV,您也可以尝试:

import cv2
im = cv2.imread('path_to_file.tif', -1)

希望这有帮助

答案 1 :(得分:1)

这对我有用(关键标志为IMREAD_ANYDEPTH):

cv2.imread(fullImagePath, flags=(cv2.IMREAD_GRAYSCALE | cv2.IMREAD_ANYDEPTH))

我在这里找到它: https://github.com/opencv/opencv/issues/7025

答案 2 :(得分:0)

我通过PIL找到了一种方法,即:

from matplotlib import pyplot as plt
from matplotlib import cm

from PIL import Image
from numpy import array

im = Image.open('path_to_file.tif')

ncols, nrows = im.size
ima = array(im.getdata()).reshape((nrows, ncols))
plt.imshow(ima, cmap=cm.Greys_r)

可能对某人有帮助。

取值