/// <summary>
    /// Calibrates the camera based on the images passed using <see cref="arwCaptureChessboardCorners" />.
    /// </summary>
    /// <param name="numImages">The number images.</param>
    /// <param name="file_name">Name of the file.</param>
    /// <param name="xSize">Size of the x.</param>
    /// <param name="ySize">Size of the y.</param>
    /// <param name="projectErrorResults">The project error for each image.</param>
    /// <returns>
    /// The average projection error for all images calibrated.
    /// </returns>
    public float arwCalibChessboardCorners(int numImages, string file_name, out float[] projectErrorResults)
    {
        projectErrorResults = new float[numImages];
        GCHandle handle  = GCHandle.Alloc(projectErrorResults, GCHandleType.Pinned);
        IntPtr   address = handle.AddrOfPinnedObject();
        float    averageProjectionError = ARNativePlugin.arwCalibChessboardCorners(file_name, address);

        handle.Free();
        return(averageProjectionError);
    }