将TriangulatePoints与SFM和Python结合使用

时间:2019-01-21 03:41:22

标签: python opencv triangulation

我正在尝试将内置的opencv函数TriangulatePoints用于多个视图:https://docs.opencv.org/3.4.4/d0/dbd/group__triangulation.html#ga211c855276b3084f3bbd8b2d9161dc74

在Linux上使用python,是否有人有使用此功能的经验?该网站仅具有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。

我按照opencv网站上的说明在计算机上安装了sfm。

当我省略sfm时,出现以下错误:

  

AttributeError:模块'cv2'没有属性'sfm'

我认为我收到了该错误,因为计算机认为我正在尝试使用TriangulatePoints的早期版本。

opencv网站上存在使用sfm的opencv代码示例,但它们位于cpp中。

我想知道在Python中使用 TriangulatePoints(带有sfm)的语法是什么?即使在cpp中,我也不明白输出数组是函数的输入吗?另外,如果有人知道如何解决sfm错误,我将不胜感激。

谢谢!

0 个答案:

没有答案