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

7

我希望使用Python读取32位浮点图像文件以进行一些图像分析。

我已经尝试过:

import matplotlib.pyplot as plt

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

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

-- 嗯,它以前可以直接使用16位TIFF文件,但不能使用32位浮点数。

3个回答

11

我曾经遇到过一个类似的问题,尝试读取单通道的32位整数图像。我想出来的解决方案是:

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

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

import cv2
im = cv2.imread('path_to_file.tif', -1)
希望这可以帮助。

3
使用skimage时运行良好,但使用opencv时(使用python3.6),会得到一个NoneType。 - ma3oun
你使用的是哪个版本的OpenCV? - Tonechas
我正在使用Anaconda 3(5.2.0)中的Python 3.6和OpenCV 3.4.2。 - ma3oun
你可以通过Dropbox、Google Drive等方式分享你的图片吗? - Tonechas

4

3
我找到了一种通过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)

也许这会对某些人有所帮助。
S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接