swift 如何使用“layerConverted(fromMetadataOutputRect:)”方法?

r3i60tvu  于 2023-03-28  发布在  Swift
关注(0)|答案(1)|浏览(85)

我正在使用Apple的Vision框架来检测人脸。然后我来到这个功能。

let cgr: CGRect = CGRect(x: 0, y: 0, width: 1, height: 1)

let videoPreviewRect = previewLayer.layerRectConverted(fromMetadataOutputRect: cgr)

其中previewLayer是AVCaptureVideoPreviewLayer类型对象。它是从metaDataOutput rect到view rect的转换。但我不完全理解它。
它是如何工作的,它转换成什么?

5sxhfpxr

5sxhfpxr1#

所以这里的想法是,通常使用像Vision Framework或AVCaptureMetadataOutput这样的东西,你会得到归一化的矩形坐标(例如{0,0}-{1,1}范围,就像整个图像的百分比)。然而,如果你想把它们绘制给用户,你可能需要屏幕点的坐标。
layerRectConverted(fromMetadataOutputRect:)metadataOutputRectConverted(fromLayerRect:)这对方法将允许您在这两个坐标系之间进行转换,并且还考虑了AVCaptureVideoPreviewLayervideoGravity属性,否则会使计算变得痛苦,例如当使用resizeAspectFill重力时。

相关问题