Spaces:
No application file
No application file
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"]) | |