VNDetectedObjectObservation.BoundingBox Property
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
The bounding box of the detected feature, in normalized coordinates.
public virtual CoreGraphics.CGRect BoundingBox { [Foundation.Export("boundingBox", ObjCRuntime.ArgumentSemantic.UnsafeUnretained)] get; }
member this.BoundingBox : CoreGraphics.CGRect
Property Value
- Attributes
Remarks
As with other rectangles in the Vision namespace, the CGRect uses normalized coordinates in the range 0..1.
The following example shows how bounding boxes might be drawn over an existing UIImageView. Note that the Y values are adjusted relative to the normalized coordinates origin in the lower-left, not the upper-left:
var frs = request as VNDetectFaceRectanglesRequest;
// Assert frs == findFacesRequest ?
var rs = frs.GetResults<VNFaceObservation>();
foreach (var fo in rs)
{
var aFaceRectangle = fo.BoundingBox;
InvokeOnMainThread(() =>
{
var x = aFaceRectangle.Left * faceContainingImage.Frame.Width;
var y = faceContainingImage.Frame.Height - aFaceRectangle.Top * faceContainingImage.Frame.Height;
var w = aFaceRectangle.Width * faceContainingImage.Frame.Width;
var h = -aFaceRectangle.Height * faceContainingImage.Frame.Height;
var scaledRect = new CGRect(x, y, w, h);
var rectView = new UIView(scaledRect);
rectView.Layer.BorderColor = UIColor.Green.CGColor;
rectView.Layer.BorderWidth = 2;
rectView.Layer.Opacity = 1;
faceContainingImage.AddSubview(rectView);
});
}