Код: Выделить всё
DetectFaceLandmarksRequestНо когда я запускаю тот же код на устройствах с iOS 26, координаты ориентиров находятся за пределами диапазона [0,1], что указывает на то, что они выходят за пределы лица.
Интересный факт: старый API VNDetectFaceLandmarksRequest работает очень хорошо, не сталкиваясь с этой проблемой
Как получить ориентиры на лице:
Код: Выделить всё
private let faceRectangleRequest = DetectFaceRectanglesRequest(.revision3)
private var faceLandmarksRequest = DetectFaceLandmarksRequest(.revision3)
func detectFaces(in ciImage: CIImage) async throws -> FaceTrackingResult {
let faces = try await faceRectangleRequest.perform(on: ciImage)
faceLandmarksRequest.inputFaceObservations = faces
let landmarksResults = try await faceLandmarksRequest.perform(on: ciImage)
...
}
Код: Выделить всё
private func convert(
point: NormalizedPoint,
faceBoundingBox: NormalizedRect,
imageSize: CGSize
) -> CGPoint {
let point = point.toImageCoordinates(
from: faceBoundingBox,
imageSize: imageSize,
origin: .upperLeft
)
return point
}
- Ввод одного и того же изображения.
- Протестировал несколько устройств на iOS 26.0.1 -> всегда неправильно.
- Протестировал несколько устройств на iOS 18.7.1 -> всегда правильно.
- macOS 26.0.1
- Xcode 26.0.1 (17A400)
- Реальные устройства, а не симулятор

Ориентиры по лицу iOS 26

UPD.
Я обнаружил, что ориентиры нормализованы относительно unalignedBoundingBox. Однако я не могу получить к нему доступ в коде. Тем не менее, когда я использую эти значения для ограничивающей рамки, она работает правильно.

Подробнее здесь: https://stackoverflow.com/questions/797 ... ut-correct
Мобильная версия