我有一个扁平的四边形平面,我知道它的尺寸,我可以找到它的轮廓,以及4个角。 我需要帮助确定确定其3D位置的方法。我已经设法获得了它的3x3透视变换,看起来像这样:
[[ 3.91873630e-02 1.20990983e+00 -2.81213415e+02]
[ 1.21202027e+00 -1.85962357e-15 -3.52697898e+02]
[ 3.83991908e-04 2.52680041e-05 1.00000000e+00]]
(这是OpenCV 3.1.0,在python中,那个矩阵只是一个帧,因此它可能无法代表所有潜在的方向)
我可以从此信息中确定远离相机的角度和相机的距离,还是需要执行更多计算?
我不确定你们需要知道什么,所以如果你需要,我会很乐意为你提供更多信息吗?
答案 0 :(得分:1)
您可以使用solvePnP函数来确定相机的四边形位置和方向。
你需要的只是
您可以直接使用Opencv的solvepnp()功能。
在输出中,您可以在相机坐标系中获得世界坐标系的姿势。如果你将世界视为四边形,你可以在相机坐标系中获得四边形的姿势信息(旋转和平移)
C++: bool solvePnP(InputArray objectPoints, InputArray imagePoints,
InputArray cameraMatrix, InputArray distCoeffs,
OutputArray rvec, OutputArray tvec,
bool useExtrinsicGuess=false, int flags=ITERATIVE );
对于标志使用CV_P3P参数,以防您恰好有4个点。