Opencv 为什么我们需要将(camera_matrix 1和2)和(R和T)参数都输入到StereoRective()?
要进行立体声校准,我们需要执行3个步骤(输入参数-->输出参数):Opencv 为什么我们需要将(camera_matrix 1和2)和(R和T)参数都输入到StereoRective()?,opencv,image-processing,computer-vision,Opencv,Image Processing,Computer Vision,要进行立体声校准,我们需要执行3个步骤(输入参数-->输出参数): :obj_角点、img_角点-->摄像机矩阵、畸变系数 :obj_角点、img_角点1/2、摄像机矩阵1/2、畸变系数1/2-->R、T、E、F :摄像机矩阵1/2,畸变系数1/2,R,T-->R1/2,P1/2,Q 我错过了一些情人 现在我们可以用Q表示,用P1或P2表示 但是,为什么我们需要同时输入(camera_matrix 1和2)和(R&T)参数 如所知,已包含R&T: struct CV_EXPORTS Camera
struct CV_EXPORTS CameraParams
{
CameraParams();
CameraParams(const CameraParams& other);
const CameraParams& operator =(const CameraParams& other);
Mat K() const;
double focal; // Focal length
double aspect; // Aspect ratio
double ppx; // Principal point X
double ppy; // Principal point Y
Mat R; // Rotation
Mat t; // Translation
};
我们从中获得的R&T与我们从中获得的CameraParams中包含的R&T有什么区别?这里的问题是术语不一致。OpenCV称之为camera matrix的是一个3x3矩阵
K
,包含内部函数。Harley和Zisserman称之为camera matrix的是3x4 camera projection matrixP=K*[R | t]
,它包括内部和外部属性。您似乎将camera matrix(只有内部参数)和缝合名称空间的CameraParams结构混合在一起,其中包含其他内容,包括外部参数。@Joan Charmant,即摄影机矩阵-3x3矩阵(仅内部参数K
),但stitch::detail::CameraParams
-3x4矩阵(内部和外部参数K*[R | t]
),不是吗?这是否意味着stitch::detail::CameraParams
是P(投影矩阵)?谢谢。但是stitch::detail::CameraParams
是投影矩阵P=K*[R | t]
?因为它包含了<代码> R< /代码>和<>代码> t>代码>和<代码> k>代码>:在这里,代码> k>代码>:<代码> Cyc::细节:CAMMALAS AMS/<代码>是C++类,而不是矩阵。stereorective()
函数不接受CameraParams
对象。它需要cv::Mat
包含矩阵的对象。是的,我的意思是stitch::detail::CameraParams
包含与P
相同的所有数据,我们可以从stitch::detail::CameraParams
中获得P
。