光流处理中最终的结果大都保存为.flo文件,但是有时候想看x或者y方向的内容或者显示时,flo文件无法直接打开。网上查了一些资料,总结并记录一下将flo文件转为tiff格式的方法。
代码如下,将flo文件以二进制格式读取,flo文件头部有三个头信息,分别存储了PIEH(类似于一个标识符)、影像宽、影像高,每个头信息以32位存储。所以程序思路很简单,二进制读取,读取三个头信息,然后再读取图像信息并转为tiff。 其中,读取flo文件的核心函数如下,根据flo文件路径读取光流结果,并存储在一个H*W*2的float32型的array中,然后根据需要存为tif或其他所需格式即可(skimage中 io.imsave()函数可以很方便的存储)。
def flo2img(floFilePath):
with open(floFilePath, "rb") as f:
header = np.fromfile(f, np.float32, 1)
imgW = np.fromfile(f, np.int32, 1)
imgH = np.fromfile(f, np.int32, 1)
imgData = np.fromfile(f, np.float32, imgH * imgW * 2).reshape([imgH, imgW, 2])
return imgData