1

During converting a rectangle in the preview layer’s coordinate system to the coordinate system can't achieve 100% precision. All rectangles are displaying a bit lower. I use layerRectConverted(fromMetadataOutputRect:)

Here is my code:

let layers: [CAShapeLayer] = observations.map { observation in

            // calculate view rect
            var transformedRect = observation.boundingBox
            transformedRect.origin.y = 1 - transformedRect.origin.y
self.cameraLayer.layerRectConverted(fromMetadataOutputRect: transformedRect)

            let layer = CAShapeLayer()
            layer.frame = convertedRect 
            layer.borderColor = UIColor.red.cgColor
            layer.borderWidth = 1
            layer.cornerRadius = 3
            return layer
        }

Result enter image description here

Can anyone help, what I am doing wrong?

Svitlana
  • 2,938
  • 1
  • 29
  • 38

1 Answers1

0

It's easy. You need to flip rect by vertical, but you changed origin y-coord and forgot flip rect itself.

Just add height

transformedRect.origin.y = 1 - transformedRect.origin.y - transformedRect.size.height

and you will get correct position of boxes.

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129