Vincentqyw
fix: roma
c74a070
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"])