Wie bekomme ich Ecken mit GPUImageHarrisCornerDetectionFilter

Ich versuche, die Eckpunkte von einem Standbild mit @ zu erhalteGPUImageHarrisCornerDetectionFilter.

Ich habe mir den Beispielcode aus dem Projekt angesehen, ich habe mir die Dokumentation angesehen, und ich habe mir diesen Beitrag angesehen, der ungefähr dasselbe ist:GPUImage Harris Corner Detection auf einem vorhandenen UIImage gibt einen schwarzen Bildschirm aus

Aber ich kann es nicht zum Laufen bringen - und es fällt mir schwer zu verstehen, wie das mit Standbildern funktionieren soll.

Was ich an diesem Punkt habe, ist das:

func harrisCorners() -> [CGPoint] {
    var points = [CGPoint]()

    let stillImageSource: GPUImagePicture = GPUImagePicture(image: self.image)
    let filter = GPUImageHarrisCornerDetectionFilter()

    filter.cornersDetectedBlock = { (cornerArray:UnsafeMutablePointer<GLfloat>, cornersDetected:UInt, frameTime:CMTime) in
        for index in 0..<Int(cornersDetected) {
            points.append(CGPoint(x:CGFloat(cornerArray[index * 2]), y:CGFloat(cornerArray[(index * 2) + 1])))
        }
    }

    filter.forceProcessingAtSize(self.image.size)
    stillImageSource.addTarget(filter)
    stillImageSource.processImage()

    return points
}

Diese Funktion liefert immer[] also es funktioniert offensichtlich nicht.

Ein interessantes Detail - Ich habe das FilterShowcaseSwift-Projekt aus GPUImage-Beispielen zusammengestellt, und der Filter findet keine sehr klaren Ecken, wie auf einem Blatt Papier auf schwarzem Hintergrund.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage