/// <summary> /// Get the parameters used in the camera pose finder. /// </summary> /// <returns>Returns the parameters used in the camera pose finder.</returns> /// <exception cref="InvalidOperationException"> /// Thrown when the Kinect Runtime could not be accessed, or /// the call failed for an unknown reason. /// </exception> public CameraPoseFinderParameters GetCameraPoseFinderParameters() { CameraPoseFinderParameters parameters = new CameraPoseFinderParameters( CameraPoseFinderParameters.Defaults.FeatureSampleLocationsPerFrame, CameraPoseFinderParameters.Defaults.MaxPoseHistory, CameraPoseFinderParameters.Defaults.MaxDepthThreshold); HRESULT hr = cameraPoseFinder.GetCameraPoseFinderParameters(parameters); ExceptionHelper.ThrowIfFailed(hr); return(parameters); }
/// <summary> /// Initialize a Kinect Fusion cameraPoseFinder. /// A Kinect camera is required to be connected. /// </summary> /// <param name="cameraPoseFinderParameters"> /// The parameters to define the number of poses and feature sample locations the camera pose finder uses. /// </param> /// <returns>The CameraPoseFinder instance.</returns> /// <exception cref="ArgumentNullException"> /// Thrown when the <paramref name="cameraPoseFinderParameters"/> parameter is null. /// </exception> /// <exception cref="ArgumentException"> /// Thrown when the <paramref name="cameraPoseFinderParameters"/> parameter's /// <c>featureSampleLocationsPerFrameCount</c>, <c>maxPoseHistoryCount</c> member is not a greater than 0, /// or the <c>featureSampleLocationsPerFrameCount</c> member is greater than 1000. /// </exception> /// <exception cref="OutOfMemoryException"> /// Thrown when the memory required for the camera pose finder processing could not be /// allocated. /// </exception> /// <exception cref="InvalidOperationException"> /// Thrown when the Kinect Runtime could not be accessed, the Kinect device is not /// connected or the call failed for an unknown reason. /// </exception> public static CameraPoseFinder FusionCreateCameraPoseFinder( CameraPoseFinderParameters cameraPoseFinderParameters) { if (null == cameraPoseFinderParameters) { throw new ArgumentNullException("cameraPoseFinderParameters"); } INuiFusionCameraPoseFinder poseFinder = null; ExceptionHelper.ThrowIfFailed(NativeMethods.NuiFusionCreateCameraPoseFinder2( cameraPoseFinderParameters, IntPtr.Zero, out poseFinder)); return(new CameraPoseFinder(poseFinder)); }
/// <summary> /// Initialize a Kinect Fusion cameraPoseFinder, with random number generator seed for feature /// locations and feature thresholds. /// </summary> /// <param name="cameraPoseFinderParameters"> /// The parameters to define the number of poses and feature sample locations the camera pose finder uses. /// </param> /// <param name="randomFeatureLocationAndThresholdSeed"> /// A seed to initialize the random number generator for feature locations and feature thresholds. /// </param> /// <returns>The CameraPoseFinder instance.</returns> /// <exception cref="ArgumentNullException"> /// Thrown when the <paramref name="cameraPoseFinderParameters"/> parameter is null. /// </exception> /// <exception cref="ArgumentException"> /// Thrown when the <paramref name="cameraPoseFinderParameters"/> parameter's /// <c>featureSampleLocationsPerFrameCount</c>, <c>maxPoseHistoryCount</c> member is not a greater than 0, /// or a maximum of 10,000,000, the <c>featureSampleLocationsPerFrameCount</c> member is greater than 1000, /// or the <paramref name="randomFeatureLocationAndThresholdSeed"/> parameter is negative. /// </exception> /// <exception cref="OutOfMemoryException"> /// Thrown when the memory required for the camera pose finder processing could not be /// allocated. /// </exception> /// <exception cref="InvalidOperationException"> /// Thrown when the Kinect Runtime could not be accessed, the Kinect device is not /// connected or the call failed for an unknown reason. /// </exception> public static CameraPoseFinder FusionCreateCameraPoseFinder( CameraPoseFinderParameters cameraPoseFinderParameters, int randomFeatureLocationAndThresholdSeed) { if (null == cameraPoseFinderParameters) { throw new ArgumentNullException("cameraPoseFinderParameters"); } uint seed = ExceptionHelper.CastAndThrowIfOutOfUintRange(randomFeatureLocationAndThresholdSeed); INuiFusionCameraPoseFinder poseFinder = null; ExceptionHelper.ThrowIfFailed(NativeMethods.NuiFusionCreateCameraPoseFinder( cameraPoseFinderParameters, ref seed, out poseFinder)); return(new CameraPoseFinder(poseFinder)); }