# HandLandmarker

    class HandLandmarker: NSObject

Performs hand landmarks detection on images.

This API expects a pre-trained hand landmarks model asset bundle.
- `
  ### [handConnections](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/HandLandmarker.md.txt#/c:objc(cs)MPPHandLandmarker(cpy)handConnections)

  ` The array of connections between all the landmarks in the hand.

  #### Declaration

  Swift

      class var handConnections: [Connection] { get }

- `
  ### [handIndexFingerConnections](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/HandLandmarker.md.txt#/c:objc(cs)MPPHandLandmarker(cpy)handIndexFingerConnections)

  ` The array of connections between the landmarks in the index finger.

  #### Declaration

  Swift

      class var handIndexFingerConnections: [Connection] { get }

- `
  ### [handMiddleFingerConnections](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/HandLandmarker.md.txt#/c:objc(cs)MPPHandLandmarker(cpy)handMiddleFingerConnections)

  ` The array of connections between the landmarks in the middle finger.

  #### Declaration

  Swift

      class var handMiddleFingerConnections: [Connection] { get }

- `
  ### [handPalmConnections](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/HandLandmarker.md.txt#/c:objc(cs)MPPHandLandmarker(cpy)handPalmConnections)

  ` The array of connections between the landmarks in the palm.

  #### Declaration

  Swift

      class var handPalmConnections: [Connection] { get }

- `
  ### [handPinkyConnections](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/HandLandmarker.md.txt#/c:objc(cs)MPPHandLandmarker(cpy)handPinkyConnections)

  ` The array of connections between the landmarks in the pinky.

  #### Declaration

  Swift

      class var handPinkyConnections: [Connection] { get }

- `
  ### [handRingFingerConnections](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/HandLandmarker.md.txt#/c:objc(cs)MPPHandLandmarker(cpy)handRingFingerConnections)

  ` The array of connections between the landmarks in the ring finger.

  #### Declaration

  Swift

      class var handRingFingerConnections: [Connection] { get }

- `
  ### [handThumbConnections](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/HandLandmarker.md.txt#/c:objc(cs)MPPHandLandmarker(cpy)handThumbConnections)

  ` The array of connections between the landmarks in the thumb.

  #### Declaration

  Swift

      class var handThumbConnections: [Connection] { get }

- `
  ### [init(modelPath:)](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/HandLandmarker.md.txt#/c:objc(cs)MPPHandLandmarker(im)initWithModelPath:error:)

  ` Creates a new instance of `HandLandmarker` from an absolute path to a model asset bundle stored locally on the device and the default `HandLandmarkerOptions`.

  #### Declaration

  Swift

      convenience init(modelPath: String) throws

  #### Parameters

  |---|---|
  | `modelPath` | An absolute path to a model asset bundle stored locally on the device. |
  | `error` | An optional error parameter populated when there is an error in initializing the hand landmarker. |

  #### Return Value

  A new instance of `HandLandmarker` with the given model path. `nil` if there is an error in initializing the hand landmarker.
- `
  ### [init(options:)](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/HandLandmarker.md.txt#/c:objc(cs)MPPHandLandmarker(im)initWithOptions:error:)

  ` Creates a new instance of `HandLandmarker` from the given `HandLandmarkerOptions`.

  #### Declaration

  Swift

      init(options: HandLandmarkerOptions) throws

  #### Parameters

  |---|---|
  | `options` | The options of type `HandLandmarkerOptions` to use for configuring the `HandLandmarker`. |
  | `error` | An optional error parameter populated when there is an error in initializing the hand landmarker. |

  #### Return Value

  A new instance of `HandLandmarker` with the given options. `nil` if there is an error in initializing the hand landmarker.
- `
  ### [detect(image:)](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/HandLandmarker.md.txt#/c:objc(cs)MPPHandLandmarker(im)detectImage:error:)

  ` Performs hand landmarks detection on the provided `MPImage` using the whole image as region of interest. Rotation will be applied according to the `orientation` property of the provided `MPImage`. Only use this method when the `HandLandmarker` is created with running mode, `.image`.

  This method supports performing hand landmarks detection on RGBA images. If your `MPImage` has a source type of `.pixelBuffer` or `.sampleBuffer`, the underlying pixel buffer must use `kCVPixelFormatType_32BGRA` as its pixel format.

  If your `MPImage` has a source type of `.image` ensure that the color space is RGB with an Alpha channel.

  #### Declaration

  Swift

      func detect(image: MPImage) throws -> HandLandmarkerResult

  #### Parameters

  |---|---|
  | `image` | The `MPImage` on which hand landmarks detection is to be performed. |
  | `error` | An optional error parameter populated when there is an error in performing hand landmarks detection on the input image. |

  #### Return Value

  An `HandLandmarkerResult` object that contains the hand hand landmarks detection results.
- `
  ### [detect(videoFrame:timestampInMilliseconds:)](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/HandLandmarker.md.txt#/c:objc(cs)MPPHandLandmarker(im)detectVideoFrame:timestampInMilliseconds:error:)

  ` Performs hand landmarks detection on the provided video frame of type `MPImage` using the whole image as region of interest. Rotation will be applied according to the `orientation` property of the provided `MPImage`. Only use this method when the `HandLandmarker` is created with running mode, `.video`.

  It's required to provide the video frame's timestamp (in milliseconds). The input timestamps must be monotonically increasing.

  This method supports performing hand landmarks detection on RGBA images. If your `MPImage` has a source type of `.pixelBuffer` or `.sampleBuffer`, the underlying pixel buffer must use `kCVPixelFormatType_32BGRA` as its pixel format.

  If your `MPImage` has a source type of `.image` ensure that the color space is RGB with an Alpha channel.

  #### Declaration

  Swift

      func detect(videoFrame image: MPImage, timestampInMilliseconds: Int) throws -> HandLandmarkerResult

  #### Parameters

  |---|---|
  | `image` | The `MPImage` on which hand landmarks detection is to be performed. |
  | `timestampInMilliseconds` | The video frame's timestamp (in milliseconds). The input timestamps must be monotonically increasing. |
  | `error` | An optional error parameter populated when there is an error in performing hand landmarks detection on the input video frame. |

  #### Return Value

  An `HandLandmarkerResult` object that contains the hand hand landmarks detection results.
- `
  ### [detectAsync(image:timestampInMilliseconds:)](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/HandLandmarker.md.txt#/c:objc(cs)MPPHandLandmarker(im)detectAsyncImage:timestampInMilliseconds:error:)

  ` Sends live stream image data of type `MPImage` to perform hand landmarks detection using the whole image as region of interest. Rotation will be applied according to the `orientation` property of the provided `MPImage`. Only use this method when the `HandLandmarker` is created with running mode, `.liveStream`.

  The object which needs to be continuously notified of the available results of hand landmarks detection must confirm to `HandLandmarkerLiveStreamDelegate` protocol and implement the `handLandmarker(_:didFinishDetectionWithResult:timestampInMilliseconds:error:)` delegate method.

  It's required to provide a timestamp (in milliseconds) to indicate when the input image is sent to the hand landmarker. The input timestamps must be monotonically increasing.

  This method supports performing hand landmarks detection on RGBA images. If your `MPImage` has a source type of `.pixelBuffer` or `.sampleBuffer`, the underlying pixel buffer must use `kCVPixelFormatType_32BGRA` as its pixel format.

  If the input `MPImage` has a source type of `.image` ensure that the color space is RGB with an Alpha channel.

  If this method is used for performing hand landmarks detection on live camera frames using `AVFoundation`, ensure that you request `AVCaptureVideoDataOutput` to output frames in `kCMPixelFormat_32BGRA` using its `videoSettings` property.

  #### Declaration

  Swift

      func detectAsync(image: MPImage, timestampInMilliseconds: Int) throws

  #### Parameters

  |---|---|
  | `image` | A live stream image data of type `MPImage` on which hand landmarks detection is to be performed. |
  | `timestampInMilliseconds` | The timestamp (in milliseconds) which indicates when the input image is sent to the hand landmarker. The input timestamps must be monotonically increasing. |
  | `error` | An optional error parameter populated when there is an error in performing hand landmarks detection on the input live stream image data. |

  #### Return Value

  `YES` if the image was sent to the task successfully, otherwise `NO`.