Emgu.CV.CameraCalibration.FindExtrinsicCameraParams2 C# (CSharp) Метод

FindExtrinsicCameraParams2() публичный статический Метод

Estimates extrinsic camera parameters using known intrinsic parameters and extrinsic parameters for each view. The coordinates of 3D object points and their correspondent 2D projections must be specified. This function also minimizes back-projection error.
public static FindExtrinsicCameraParams2 ( MCvPoint3D32f objectPoints, PointF imagePoints, Emgu.CV.IntrinsicCameraParameters intrin ) : Emgu.CV.ExtrinsicCameraParameters
objectPoints MCvPoint3D32f The array of object points
imagePoints System.Drawing.PointF The array of corresponding image points
intrin Emgu.CV.IntrinsicCameraParameters The intrinsic parameters
Результат Emgu.CV.ExtrinsicCameraParameters
        public static ExtrinsicCameraParameters FindExtrinsicCameraParams2(
          MCvPoint3D32f[] objectPoints,
          PointF[] imagePoints,
          IntrinsicCameraParameters intrin)
        {
            ExtrinsicCameraParameters p = new ExtrinsicCameraParameters();

             GCHandle handle1 = GCHandle.Alloc(objectPoints, GCHandleType.Pinned);
             GCHandle handle2 = GCHandle.Alloc(imagePoints, GCHandleType.Pinned);
             using (Matrix<float> objectPointMatrix = new Matrix<float>(objectPoints.Length, 3, handle1.AddrOfPinnedObject()))
             using (Matrix<float> imagePointMatrix = new Matrix<float>(imagePoints.Length, 2, handle2.AddrOfPinnedObject()))
            CvInvoke.cvFindExtrinsicCameraParams2(objectPointMatrix, imagePointMatrix, intrin.IntrinsicMatrix.Ptr, intrin.DistortionCoeffs.Ptr, p.RotationVector.Ptr, p.TranslationVector.Ptr, 0);
             handle1.Free();
             handle2.Free();

             return p;
        }