Как обрезать обнаруженный прямоугольник в изображении с помощью 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)!)

Другие вопросы по тегам