我想用python读取32位浮点图像文件来进行图像分析。
我试过了
import matplotlib.pyplot as plt
im = plt.imread('path_to_file.tif')
但是,这只将数据读取为8位整数值。有没有办法为imread()提供正确的数据类型?
- 嗯,以前开箱即用的是16位TIFF文件,但没有使用32位浮点数。
答案 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))
答案 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)
可能对某人有帮助。
取值