Как обрезать обнаруженный прямоугольник в изображении с помощью CIDetector и Swift
Я работаю над приложением, которое обнаруживает удостоверения личности, и пытаюсь использовать встроенный в iID CIDetector для обнаружения объектов прямоугольной формы при предварительном просмотре. я использую решение, описанное в этом руководстве здесь CoreImage Detectors
я получаю плавное изображение результата
Мой вопрос: есть ли способ извлечь и обрезать обнаруженный прямоугольник?
2 ответа
Решение
func cropBusinessCardForPoints(image: CIImage, topLeft: CGPoint, topRight: CGPoint, bottomLeft: CGPoint, bottomRight: CGPoint) -> CIImage {
var businessCard: CIImage
businessCard = image.imageByApplyingFilter(
"CIPerspectiveTransformWithExtent",
withInputParameters: [
"inputExtent": CIVector(CGRect: image.extent),
"inputTopLeft": CIVector(CGPoint: topLeft),
"inputTopRight": CIVector(CGPoint: topRight),
"inputBottomLeft": CIVector(CGPoint: bottomLeft),
"inputBottomRight": CIVector(CGPoint: bottomRight)])
businessCard = image.imageByCroppingToRect(businessCard.extent)
return businessCard
}
Swift 3, простое решение
let faceScanningArea = CGRect(x: 0, y: 0, ширина: 50, высота: 50)
theFaceFrame.image = UIImage (cgImage (orginalImage.image?.cgImage)!. обрезка (до: faceScanningArea)!)