将人脸识别VNFaceLandmarkRegion2D转换为要缩放的帧坐标

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

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

[请让我知道如何将VNFaceLandmarkRegion2D点转换为帧坐标。因此,我可以查看该位置以进行变换,或建议其他任何方法来变换人脸地标。

objective-c swift xcode face-detection vision
2个回答
0
投票
作为新手,这是我可以找到的作为CGPoint的面部标记的内容:

    首先将所选图像转换为CIImage
  1. 图像上使用的faceDetector
  2. [分析每张脸的图像以防万一]
  • 代码:

    let chosenPicture = CIImage(data: (self.selectedimage.image?.tiffRepresentation)!) let selectedFace = faceDetector?.features(in: chosenPicture!, options: [CIDetectorSmile:true]) for person in selectedFace as! [CIFaceFeature] { let p1LeftEye = person.leftEyePosition let p1RightEye = person.rightEyePosition let p1Mouth = person.mouthPosition


  • 0
    投票
    这段来自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)) }) }

    © www.soinside.com 2019 - 2024. All rights reserved.