VNRectangleObservation 当预览图层大小改变时在错误位置绘制

问题描述 投票:0回答:0

我正在使用下面的代码使用 Apple

VNRectangleObservation
在图像周围绘制一个矩形。这是在检测矩形,但是当我调整
AVCaptureVideoPreviewLayer
视图大小时,矩形没有显示在正确的位置。请看下面的截图。

func drawBoundingBox(rect : VNRectangleObservation) {
    
        let transform = CGAffineTransform(scaleX: 1, y: -1).translatedBy(x: 0, y: -self.previewLayer.frame.height)
        let scale = CGAffineTransform.identity.scaledBy(x: self.previewLayer.frame.width, y: self.previewLayer.frame.height)

        let bounds = rect.boundingBox.applying(scale).applying(transform)
        createLayer(in: bounds)
    }

    private func createLayer(in rect: CGRect) {

        maskLayer = CAShapeLayer()
        maskLayer.frame = rect
        maskLayer.cornerRadius = 10
        maskLayer.opacity = 0.75
        maskLayer.borderColor = UIColor.red.cgColor
        maskLayer.borderWidth = 2.0
        
        previewLayer.insertSublayer(maskLayer, at: 1)

    }

ios swift vision visionkit
© www.soinside.com 2019 - 2024. All rights reserved.