# Mask

    class Mask: NSObject, NSCopying

The wrapper class for MediaPipe segmentation masks.

Masks are stored as `UInt8 *` or `float *` objects. Every mask has an underlying type which can be accessed using `dataType`. You can access the mask as any other type using the appropriate properties. For example, if the underlying type is `uInt8`, in addition to accessing the mask using `uint8Data`, you can access `float32Data` to get the 32 bit float data (with values ranging from 0.0 to 1.0). The first time you access the data as a type different from the underlying type, an expensive type conversion is performed. Subsequent accesses return a pointer to the memory location for the same type converted array. As type conversions can be expensive, it is recommended to limit the accesses to data of types different from the underlying type.

Masks that are returned from a MediaPipe Tasks are owned by by the underlying C++ Task. If you need to extend the lifetime of these objects, you can invoke the `copy()` method.
- `
  ### [init(float32Data:width:height:shouldCopy:)](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/Mask.md.txt#/c:objc(cs)MPPMask(im)initWithFloat32Data:width:height:shouldCopy:)

  ` Initializes an `Mask` object of type `float32` with the given `float*` data, width and height.

  If `shouldCopy` is set to `true`, the newly created `Mask` stores a reference to a deep copied `float32Data`. Since deep copies are expensive, it is recommended to not set `shouldCopy` unless the `Mask` must outlive the passed in `float32Data`.

  #### Declaration

  Swift

      init?(float32Data: UnsafePointer<Float>, width: Int, height: Int, shouldCopy: Bool)

  #### Parameters

  |---|---|
  | `float32Data` | A pointer to the memory location of the `float` data array. |
  | `width` | The width of the mask. |
  | `height` | The height of the mask. |

  #### Return Value

  A new `Mask` instance with the given `float*` data, width and height.
- `
  ### [init(uInt8Data:width:height:shouldCopy:)](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/Mask.md.txt#/c:objc(cs)MPPMask(im)initWithUInt8Data:width:height:shouldCopy:)

  ` Initializes an `Mask` object of type `uInt8` with the given `UInt8*` data, width and height.

  If `shouldCopy` is set to `true`, the newly created `Mask` stores a reference to a deep copied `uint8Data`. Since deep copies are expensive, it is recommended to not set `shouldCopy` unless the `Mask` must outlive the passed in `uint8Data`.

  #### Declaration

  Swift

      init?(uInt8Data uint8Data: UnsafePointer<UInt8>, width: Int, height: Int, shouldCopy: Bool)

  #### Parameters

  |---|---|
  | `uint8Data` | A pointer to the memory location of the `UInt8` data array. |
  | `width` | The width of the mask. |
  | `height` | The height of the mask. |
  | `shouldCopy` | The height of the mask. |

  #### Return Value

  A new `Mask` instance with the given `UInt8*` data, width and height.
- `
  ### [dataType](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/Mask.md.txt#/c:objc(cs)MPPMask(py)dataType)

  ` The data type of the mask.

  #### Declaration

  Swift

      var dataType: MaskDataType { get }

- `
  ### [float32Data](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/Mask.md.txt#/c:objc(cs)MPPMask(py)float32Data)

  ` The pointer to the memory location where the underlying mask as a single channel float 32 array is stored. Float values range from 0.0 to 1.0.

  #### Declaration

  Swift

      var float32Data: UnsafePointer<Float> { get }

- `
  ### [height](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/Mask.md.txt#/c:objc(cs)MPPMask(py)height)

  ` The height of the mask.

  #### Declaration

  Swift

      var height: Int { get }

- `
  ### [uint8Data](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/Mask.md.txt#/c:objc(cs)MPPMask(py)uint8Data)

  ` The pointer to the memory location where the underlying mask as a single channel `UInt8` array is stored. Uint8 values use the full value range and range from 0 to 255.

  #### Declaration

  Swift

      var uint8Data: UnsafePointer<UInt8> { get }

- `
  ### [width](https://developers.google.com/edge/api/mediapipe/swift/vision/Classes/Mask.md.txt#/c:objc(cs)MPPMask(py)width)

  ` The width of the mask.

  #### Declaration

  Swift

      var width: Int { get }