人脸检测ios7坐标缩放问题

人脸检测ios7坐标缩放问题,ios,image,uiimageview,scale,face-detection,Ios,Image,Uiimageview,Scale,Face Detection,我正在使用人脸检测API,想知道如何将大分辨率图像的坐标转换为UIImageView上显示的较小图像。到目前为止,我已经反转了图像和容器视图的坐标系,使其与核心图像坐标系匹配,并且我还计算了高分辨率图像和图像视图尺寸之间的高度比,但是我得到的坐标根本不准确。我假设我不能像我想象的那样轻松地将点从大图像转换为小图像。有人能指出我的错误吗 首先,我将从图像视图中删除变换。只需让图像视图以其已存在的方向显示图像。这将使计算容易得多 现在,CIFaceFeature以图像坐标输出其特征。但是您的imag

我正在使用人脸检测API,想知道如何将大分辨率图像的坐标转换为UIImageView上显示的较小图像。到目前为止,我已经反转了图像和容器视图的坐标系,使其与核心图像坐标系匹配,并且我还计算了高分辨率图像和图像视图尺寸之间的高度比,但是我得到的坐标根本不准确。我假设我不能像我想象的那样轻松地将点从大图像转换为小图像。有人能指出我的错误吗


首先,我将从图像视图中删除变换。只需让图像视图以其已存在的方向显示图像。这将使计算容易得多

现在,
CIFaceFeature
以图像坐标输出其特征。但是您的imageView可能更小或更大。因此,首先,保持简单,并将imageView的内容模式设置为左上角

imageView.contentMode = UIViewContentModeTopLeft;
现在你根本不需要缩放坐标

如果您对此感到满意,请将contentMode设置为更合理的方式,如aspect fit

imageView.contentMode = UIViewContentModeScaleAspectFit;
现在,您需要通过将每个坐标乘以纵横比来缩放x和y坐标

 CGFloat xRatio = imageView.frame.size.width / image.size.width;
 CGFloat yRatio = imageView.frame.size.height / image.size.height;
 CGFloat aspectFitRatio = MIN(xRatio, yRatio);
最后,要将旋转添加回。如果可能的话,尽量避免这种情况,例如,首先修复图像,使其垂直

 CGFloat xRatio = imageView.frame.size.width / image.size.width;
 CGFloat yRatio = imageView.frame.size.height / image.size.height;
 CGFloat aspectFitRatio = MIN(xRatio, yRatio);