Я пытаюсь запустить набор данных одометрии Китти, используя python и opencv. Я скопировал некоторый код из https://github.com/uoip/monoVO-python, который работает довольно хорошо.Я хотел взглянуть на облако точек, поэтому я попытался использовать другую версию «coverpose », которая предоставляет облако точек.Ключевая часть кода ниже
def processFrame(self, frame_id):
self.px_ref, self.px_cur = featureTracking(self.last_frame, self.new_frame, self.px_ref)
E, mask = cv2.findEssentialMat(self.px_cur, self.px_ref, focal=self.focal, pp=self.pp, method=cv2.RANSAC, prob=0.999, threshold=1.0)
# original version of recoverpose
_, R, temp, mask1 = cv2.recoverPose(E, self.px_cur, self.px_ref, focal=self.focal, pp = self.pp)
t = temp.ravel()
# new version of recoverpose
_,R1, temp1, mask1, foundPts = cv2.recoverPose(E,self.px_cur, self.px_ref,
cameraMatrix = self.cam.K,
distanceThresh = 0.0,
mask = mask)
t1 = temp1.ravel()
print('R,t diff')
print(R-R1)
print(t-t1)
print('R,R1')
print(R)
print(R1)
Программа начала производить мусор, поэтому я добавил операторы печати.Выходные данные первых двух вызовов приведены ниже.
R, t diff [[2. 0. -0.04]
[- 0.2. 0,05]
[- 0,03 0,06 0.]]
[0.0. 0.]
R, R1
[[1. 0. -0.]
[- 0.1. -0.]
[0. 0. 1.]]
[[- 1.-0.0.04]
[0. -1.-0,06]
[0,04 -0,06 1.]]
R, t diff
[[0.0. 0.]
[0.0. 0.]
[0.0. 0.]]
[0.0. 0.]
R, R1
[[1. -0.-0.]
[0. 1. -0.]
[0. 0. 1.]]
[[1. -0.-0.]
[0. 1. -0.]
[0. 0. 1.]]
Новая строка иногда, но невсегда давая другую позу, которая выглядит за камерой.Я пытался не использовать маску (mask = None), и я пробовал разные значения для distanceThresh.Я не могу найти значение по умолчанию для distanceThresh.У кого-нибудь есть идеи относительно того, что может быть не так или как действовать?