Python读取PFM格式的图像
2023-12-29 16:15:48
PFM(Portable FloatMap)是一种用于存储浮点数灰度图像的文件格式。下面是使用Python读取PFM格式图像的一种方法read_pfm()
,该函数首先读取文件的头部信息,包括文件格式、图像尺寸和缩放因子。然后,它读取文件中的像素数据,并根据需要进行重构和缩放。最后,函数返回一个包含图像数据的NumPy数组。只需将代码中的image.pfm
替换为你要读取的PFM图像的文件路径即可。
def read_pfm(file):
"""
读取PFM格式的图像
"""
with open(file, "rb") as f:
# 读取头部信息
header = f.readline().rstrip()
color = True if header == b'PF' else False
# 读取尺寸信息
dim_match = re.match(r'^(\d+)\s(\d+)\s$', f.readline().decode('ascii'))
if dim_match:
width, height = map(int, dim_match.groups())
else:
raise Exception("Malformed PFM header.")
# 读取比例因子
scale = float(f.readline().rstrip())
if scale < 0: # 如果比例因子为负,则数据为小端字节序
endian = '<'
scale = -scale
else:
endian = '>' # 大端字节序
# 读取图像数据
data = np.fromfile(f, endian + 'f') # 根据头部信息读取浮点数
shape = (height, width, 3) if color else (height, width)
data = np.reshape(data, shape)
data = np.flipud(data) # PFM格式存储的图像通常是上下颠倒的
return data
# 读取PFM图像
image_data = read_pfm('image.pfm')
# 打印图像形状和数据类型
print('Image Shape:', image_data.shape)
print('Data Type:', image_data.dtype)
文章来源:https://blog.csdn.net/qq_43811536/article/details/135290663
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!