import os import numpy as np import h5py import cv2 class standard_reader: def __init__(self,config): self.raw_dir=config['rawdata_dir'] self.dataset=h5py.File(config['dataset_dir'],'r') self.num_kpt=config['num_kpt'] def run(self,index): K1,K2=np.asarray(self.dataset['K1'][str(index)]),np.asarray(self.dataset['K2'][str(index)]) R = np.asarray(self.dataset['R'][str(index)]) t = np.asarray(self.dataset['T'][str(index)]) t = t / np.sqrt((t ** 2).sum()) desc1,desc2=self.dataset['desc1'][str(index)][()][:self.num_kpt],self.dataset['desc2'][str(index)][()][:self.num_kpt] x1, x2 = self.dataset['kpt1'][str(index)][()][:self.num_kpt], self.dataset['kpt2'][str(index)][()][:self.num_kpt] e,f=self.dataset['e'][str(index)][()],self.dataset['f'][str(index)][()] img1_path,img2_path=self.dataset['img_path1'][str(index)][()][0].decode(),self.dataset['img_path2'][str(index)][()][0].decode() img1,img2=cv2.imread(os.path.join(self.raw_dir,img1_path)),cv2.imread(os.path.join(self.raw_dir,img2_path)) info={'index':index,'K1':K1,'K2':K2,'R':R,'t':t,'x1':x1,'x2':x2,'desc1':desc1,'desc2':desc2,'img1':img1,'img2':img2,'e':e,'f':f,'r_gt':R,'t_gt':t} return info def close(self): self.dataset.close() def __len__(self): return len(self.dataset['K1'])