Использование TriangulatePoints с SFM с Python - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь использовать встроенную функцию opencv TriangulatePoints для нескольких представлений: https://docs.opencv.org/3.4.4/d0/dbd/group__triangulation.html#ga211c855276b3084f3bbd8b2d9161dc74.

Используя python в Linux, кто-нибудь имеет опыт использования этой функции? Веб-сайт имеет только синтаксис для cpp, и в Python я не знаю, как его кодировать.

Мой код сейчас:

import cv2
import numpy as np
point_2D = np.array([[17.4485, 709.7993], [17.4382, 709.8409]])
Proj_Matrices = np.array([ [1037.5, -6.9927, -10.0190, -4780.7], [6.9747, 1043.3, -5.8867, -731.9206], [644.7895, 383.4982, -3231.1], [1036.937, -22.8371, -28.3254, -5607.7], [23.0587, 1043.1, 3.1815, -633.4485], [650.4355, 373.6, -15.3504, -3706.5] ])

OutputArray = np.zeros((3,2))
Points_3D = cv2.sfm.triangulatePoints(point_2D, Proj_Matrices, OutputArray)

Однако, когда я запускаю его из терминала, я получаю следующую ошибку:

AttributeError: модуль 'cv2' не имеет атрибута 'sfm.

Я установил sfm на свой компьютер, следуя инструкциям на сайте opencv.

Когда я опускаю sfm, я получаю следующую ошибку:

AttributeError: модуль 'cv2' не имеет атрибута 'sfm'

Я думаю, что получаю эту ошибку, поскольку устройство думает, что я пытаюсь использовать предыдущую версию TriangulatePoints.

Примеры кода opencv, использующего sfm, есть на сайте opencv, но они есть в cpp.

Мне интересно, какой синтаксис для использования TriangulatePoints (с sfm) есть в python? Даже в cpp я не понимаю, как выходной массив является входом для функции? Также, если кто-нибудь знает, как исправить ошибку sfm, которую я получаю, это будет оценено.

Спасибо!

...