durch Verwenden des folgenden Codes, um ein Gesicht von einem Bild zu erkennen.Wie führe ich die Gesichtserkennung in Swift
Wie kann ich ein Gesicht erkennen und es in einem NSMage speichern?
durch Verwenden des folgenden Codes, um ein Gesicht von einem Bild zu erkennen.Wie führe ich die Gesichtserkennung in Swift
Wie kann ich ein Gesicht erkennen und es in einem NSMage speichern?
Xcode 9 • Swift 4
extension NSImage {
var ciImage: CIImage? {
guard let data = tiffRepresentation else { return nil }
return CIImage(data: data)
}
var faces: [NSImage] {
guard let ciImage = ciImage else { return [] }
return (CIDetector(ofType: CIDetectorTypeFace, context: nil, options: [CIDetectorAccuracy: CIDetectorAccuracyHigh])?
.features(in: ciImage) as? [CIFaceFeature])?
.map {
let ciimage = ciImage.cropped(to: $0.bounds) // Swift 3 use cropping(to:)
let imageRep = NSCIImageRep(ciImage: ciimage)
let nsImage = NSImage(size: imageRep.size)
nsImage.addRepresentation(imageRep)
return nsImage
} ?? []
}
}
Testing
let image = NSImage(contentsOf: URL(string: "https://i.stack.imgur.com/Xs4RX.jpg")!)!
let faces = image.faces
Danke für Ihre Antwort. Wie kann ich die Größe des Crop-Fensters anpassen? Beispiel: Holen Sie das erkannte Gesichtsrechteck, erhöhen Sie die Größe des Rechtecks und beschneiden Sie diesen Teil. Ändert $ 0.bounds mit einer benutzerdefinierten Rechteckhilfe. Bitte um Rat. – techno
@techno die Antwort ist auf der iOS-Frage, die ich verknüpfte, als ich Ihre andere Frage schloss. Sie können 'bounds.insetBy (dx: -10, dy: -10) verwenden' –
Vielen Dank ... :) – techno
So '' CIFeature' hat eine bounds' Eigenschaft, die das Begrenzungsrechteck definiert von dem, was gefunden wurde. Die Frage wird also: Wie kopierst du einen Teil eines Bildes? Zu welcher [diese Frage] (https://stackoverflow.com/questions/31254435/how-to-select-a-portion-of-animage-crop-and-save-it-using-swift) könnte etwas abwerfen Licht (persönlich mag ich die oben gewählte Antwort) und dann könntest du einen Blick auf [Wie man ein UIImage in eine Datei speichern mit UIImagePNGRepresentation] (https://www.hackingwithswift.com/example-code/media/how-to) -save-a-uiimage-to-a-file-using-uiimagepngrepräsentation) – MadProgrammer
OSX hat keine UIwhatever. Er muss auch von NSImage in CImage konvertieren und zurück zu NSMagazin –