Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 什么是新的摄像机矩阵。?_Opencv_Camera Calibration_Stereo 3d - Fatal编程技术网

Opencv 什么是新的摄像机矩阵。?

Opencv 什么是新的摄像机矩阵。?,opencv,camera-calibration,stereo-3d,Opencv,Camera Calibration,Stereo 3d,我在理解cvUndistortpoints中的新相机矩阵时遇到了一个问题。我们在立体校准中得到摄像机的摄像机矩阵,以及为什么我们必须在CVStereoRective中传递一个新的cameramatrix,这是我们从CVUndersortPoints获得的。在输出cvUndistortPoints后,新的摄像机矩阵与摄像机矩阵有什么不同 void cvUndistortPoints(const CvMat* src, CvMat* dst, const CvMat* cameraMatrix,

我在理解
cvUndistortpoints
中的新相机矩阵时遇到了一个问题。我们在立体校准中得到摄像机的摄像机矩阵,以及为什么我们必须在CVStereoRective中传递一个新的cameramatrix,这是我们从CVUndersortPoints获得的。在输出
cvUndistortPoints
后,新的摄像机矩阵与摄像机矩阵有什么不同

void cvUndistortPoints(const CvMat* src, CvMat* dst, const CvMat* cameraMatrix, 
         const CvMat* distCoeffs, const CvMat* R=NULL, const CvMat* P=NULL)

答案在您提供的文档中向上一页。P是用立体定向仪给你的

下面是opencvrefman.pdf中的undistort下的内容,我的朋友,你也应该阅读:

newCameraMatrix–扭曲图像的相机矩阵。默认情况下 与cameraMatrix相同,但您可以另外缩放和移动 结果是使用不同的矩阵


现在,我对这一点非常陌生,还没有机会使用StereoRective功能,但我猜您可能希望不失真图像,使其看起来像其他相机所看到的一样。

对于单目相机,newCameraMatrix通常等于cameraMatrix,或者可以通过GetOptimizeNewCameraMatrix计算,以更好地控制缩放


检查一下

实际上,新的摄像机矩阵p是一个-输入-。CVunistortPoints没有创建它。如果您能澄清我,为什么我们要将新的相机矩阵转换为CVunistortPoints,我将非常高兴。传递这个新矩阵的具体用途是什么?文档中令人困惑的部分是短语“畸变图像的摄像机矩阵”。它不是畸变图像的矩阵,而是假设的“未畸变”图像的矩阵,即输出图像。摄像机矩阵有4个重要区域,2个焦距(x和y),以及2个位移——“主点”的坐标。前两个允许缩放,后一个可以移动视点。我还尝试一次性校正图像,将inNewCameraMatrix乘以摄像机校准外部参数的旋转矩阵的倒数(精确沿z轴查看)。有没有可能发布相关代码?链接已断开。