Получите широту / долготу на основе смещения обнаружения точек с камерой OpenCV - PullRequest
0 голосов
/ 29 мая 2020

Я расставил точки на полу на расстоянии нескольких метров (прямо). Я прокручиваю камеру по этим точкам. Я могу обнаружить смещение каждой точки. Итак, у меня есть «эталонные» широта и долгота. В зависимости от смещения мне нужно узнать следующую широту / долготу. Предположим, что эталонная широта / долгота широта = 18,123456789099 долг. 73.123456789099 траектория X, траектория Y: эти значения получены из функции смещения. Когда камера движется, я определяю значение смещения (сравнивая точки текущего кадра и точки следующего кадра) и имею функцию, которая возвращает следующую широту / долготу. Но я не понимаю точную широту / долготу. Ниже приведен код функции.

def getNewLatLong(latitude, longitude, trajectoryX, trajectoryY):
PIX_TO_CM = 0.026458333
CM_TO_EARTHDEGREE = 0.00000008983152841195
ALIGNED_XY_LATLONG = True
SIGN_X_TO_EARTH = 1
SIGN_Y_TO_EARTH = -1
latitude = float(latitude)
longitude = float(longitude)
trajectoryX = float(trajectoryX)
trajectoryY = float(trajectoryY)
if ALIGNED_XY_LATLONG:
    new_latitude = latitude + (trajectoryX / PIX_TO_CM) * CM_TO_EARTHDEGREE * SIGN_X_TO_EARTH
    new_longitude = longitude + (trajectoryY / PIX_TO_CM) * CM_TO_EARTHDEGREE * SIGN_Y_TO_EARTH
else:
    new_latitude = latitude + (trajectoryY / PIX_TO_CM) * CM_TO_EARTHDEGREE * SIGN_Y_TO_EARTH
    new_longitude = longitude + (trajectoryX / PIX_TO_CM) * CM_TO_EARTHDEGREE * SIGN_X_TO_EARTH
newLatLongObj = {'lat': new_latitude, 'long': new_longitude}
print(newLatLongObj)
return newLatLongObj
...