我希望使用Python读取32位浮点图像文件以进行一些图像分析。
我已经尝试过:
import matplotlib.pyplot as plt
im = plt.imread('path_to_file.tif')
但是,这只能将数据读取为8位整数值。有没有办法为imread()提供正确的数据类型?
-- 嗯,它以前可以直接使用16位TIFF文件,但不能使用32位浮点数。
我希望使用Python读取32位浮点图像文件以进行一些图像分析。
我已经尝试过:
import matplotlib.pyplot as plt
im = plt.imread('path_to_file.tif')
但是,这只能将数据读取为8位整数值。有没有办法为imread()提供正确的数据类型?
-- 嗯,它以前可以直接使用16位TIFF文件,但不能使用32位浮点数。
我曾经遇到过一个类似的问题,尝试读取单通道的32位整数图像。我想出来的解决方案是:
from skimage import io
im = io.imread('path_to_file.tif')
如果您在计算机上安装了OpenCV,您也可以尝试:
import cv2
im = cv2.imread('path_to_file.tif', -1)
希望这可以帮助。这个对我有效(关键标志是IMREAD_ANYDEPTH
):
cv2.imread(fullImagePath, flags=(cv2.IMREAD_GRAYSCALE | cv2.IMREAD_ANYDEPTH))
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)