如何在Fortran程序中读取.raw文件?

时间:2018-04-26 02:21:21

标签: image-processing fortran

我正在使用Fortran中的旧有限元代码。这是一所大学的研究项目。

我有一个文件 .raw ,用于表示3D图像。

.raw 文件中的数据存储在 uint16 uint8 中,并且知道整数总数。

如何在Fortran程序中将此图像读取为整数数组?

类似的东西

allocate(imgarray(total_int))
call raw2array(filename,imgarray)

我目前正在使用python来读取图像,并将其转换为整数向量。使用文本文件在Fortran中读取此向量。

在python中

imgarray = np.fromfile(fid, dtype=np.uint16,count=total_int,sep='')

但是当读取超过 1000x1000x1000 整数的文件时,过程变得非常慢。

该项目要求在Fortran中的程序中以二进制形式读取图像 .raw ,作为完成向量的子例程。

如何使用Fortran中的子程序读取此图像(二进制)并将其转换为整数向量?

2 个答案:

答案 0 :(得分:1)

if your compiler supports 16 bit integers and stream access it is as simple as this

   use iso_fortran_env
   implicit none
   integer(kind=INT16), allocatable::m(:,:,:)
   allocate(m(1000,1000,1000))
   open(100,file='test.raw',access='stream')
   read(100)m
   end

答案 1 :(得分:0)

从@agentp给出的解决方案中, .raw 文件在数组中读取:

use iso_fortran_env
implicit none
integer(kind=INT16), allocatable::m(:)
integer total_int
total_int = 1000*1000*1000
allocate(m(total_int))
open(100,file='test.raw',access='stream')
read(100)m