【发布时间】:2013-01-17 02:24:45
【问题描述】:
我试图弄清楚如何转换从CIFaceFeature 返回的CGPoint 结果,以便在CALayer 中使用它们进行绘制。以前,我已将图像标准化为 0 旋转以使事情变得更容易,但这会导致设备以横向模式拍摄的图像出现问题。
我已经为此工作了一段时间但没有成功,我不确定我对任务的理解是否不正确,或者我的方法是否不正确,或两者兼而有之。以下是我认为正确的:
根据CIDetector featuresInImage:options: 方法的文档
A dictionary that specifies the orientation of the image. The detection is
adjusted to account for the image orientation but the coordinates in the
returned feature objects are based on those of the image.
在下面的代码中,我试图旋转一个 CGPoint,以便通过覆盖 UIImageView 的 CAShape 层来绘制它。
我正在做的(...或认为我在做...)是将左眼 CGPoint 平移到视图的中心,旋转 90 度,然后将点平移回原来的位置。这是不正确的,但我不知道我哪里出错了。是我的方法错误还是我实施的方式错误?
#define DEGREES_TO_RADIANS(angle) ((angle) / 180.0 * M_PI)
-- leftEyePosition 是一个 CGPoint
CGAffineTransform transRot = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(90));
float x = self.center.x;
float y = self.center.y;
CGAffineTransform tCenter = CGAffineTransformMakeTranslation(-x, -y);
CGAffineTransform tOffset = CGAffineTransformMakeTranslation(x, y);
leftEyePosition = CGPointApplyAffineTransform(leftEyePosition, tCenter);
leftEyePosition = CGPointApplyAffineTransform(leftEyePosition, transRot);
leftEyePosition = CGPointApplyAffineTransform(leftEyePosition, tOffset);
来自这篇文章:https://stackoverflow.com/a/14491293/840992,我需要根据 imageOrientation 进行旋转
方向
Apple/UIImage.imageOrientation Jpeg/文件 kCGImagePropertyOrientation
UIImageOrientationUp = 0 = Landscape left = 1 UIImageOrientationDown = 1 = Landscape right = 3 UIImageOrientationLeft = 2 = Portrait down = 8 UIImageOrientationRight = 3 = Portrait up = 6
消息由 skinnyTOD 于 2013 年 2 月 1 日下午 4:09 编辑
【问题讨论】:
标签: ios uiimage face-detection uiimageorientation cifacefeature