首页 > 解决方案 > 使用boundingBox绘制矩形

问题描述

通过 VNRecognizeTextRequest,我从特定的boundingBox 获得以下坐标:(0.21611927830895714、0.4163079471243136、0.017705895179925962、0.1368724813140948)。

我的问题是如何使用这些 boundingBox 坐标在 UIImageView 顶部绘制一个矩形?

标签: iosswiftvision

解决方案


要从标准化转换为图像坐标,您可以使用以下命令

let rectInImage = VNImageRectForNormalizedRect(boundingBox, image.size.width, image.size.height)

从那里您可以使用 UIBezierPath 来绘制路径:

func drawRect(_ rect: CGRect, layer: CALayer) {
    let center = CGPoint(x: rect.midX, y: rect.midY)
    let path: UIBezierPath = UIBezierPath(rect: rect)

    let rectShape: CAShapeLayer = CAShapeLayer()
    rectShape.path = path.cgPath
    rectShape.position = center
    rectShape.bounds = rect

    rectShape.strokeColor = UIColor.green.cgColor
    rectShape.fillColor = UIColor.clear.cgColor
    rectShape.lineWidth = 1.0

    layer.addSublayer(rectShape)
}

推荐阅读