cvFindExtrinsicCameraParams2() приватный Метод

private cvFindExtrinsicCameraParams2 ( IntPtr objectPoints, IntPtr imagePoints, IntPtr intrinsicMatrix, IntPtr distortionCoeffs, IntPtr rotationVector, IntPtr translationVector, int useExtrinsicGuess ) : void
objectPoints IntPtr
imagePoints IntPtr
intrinsicMatrix IntPtr
distortionCoeffs IntPtr
rotationVector IntPtr
translationVector IntPtr
useExtrinsicGuess int
Результат void
Пример #1
0
        /// <summary>
        /// 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.
        /// </summary>
        /// <param name="objectPoints">The array of object points</param>
        /// <param name="imagePoints">The array of corresponding image points</param>
        /// <param name="intrin">The intrinsic parameters</param>
        /// <returns>The extrinsic parameters</returns>
        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);
        }