我正在尝试将内置的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错误,我将不胜感激。
谢谢!