Я пытаюсь понять, как преобразовать результаты CGPoint
, возвращенные из CIFaceFeature
, чтобы рисовать с ними в 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, чтобы нарисовать его через слой CAShape, который перекрывает UIImageView.
То, что я делаю (... или думаю, что делаю...), - это перевод точки 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 мне нужно сделать повороты на основе изображениеОриентация
Ориентация
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 01.02.13 в 16:09.