首页 > 解决方案 > 将Vision人脸检测VNFaceLandmarkRegion2D点转换为要缩放的帧坐标

问题描述

我正在使用视觉框架来检测面部标志,它工作正常,但我需要转换面部标志,如鼻子、眼睛,为此我需要在帧坐标中获取鼻子、眼睛位置,因为面部标志是使用 VNFaceLandmarkRegion2D 点绘制的。

请让我知道如何将 VNFaceLandmarkRegion2D 点转换为框架坐标。因此,我可以获取要转换的位置或建议任何其他方式来转换面部地标。

标签: objective-cswiftxcodeface-detectionvision

解决方案


Joshua Newnham 的这段代码解决了你的问题。

 func getTransformedPoints(
                landmark:VNFaceLandmarkRegion2D,
                faceRect:CGRect,
                imageSize:CGSize) -> [CGPoint]{

                // last point is 0.0
                return landmark.normalizedPoints.map({ (np) -> CGPoint in
                    return CGPoint(
                        x: faceRect.origin.x + np.x * faceRect.size.width,
                        y: imageSize.height - (np.y * faceRect.size.height + faceRect.origin.y))
                })
            }

推荐阅读