Cómo obtener esquinas usando GPUImageHarrisCornerDetectionFilter

Estoy tratando de obtener los puntos de esquina de una imagen fija usandoGPUImageHarrisCornerDetectionFilter.

He mirado el código de ejemplo del proyecto, he mirado la documentación y he mirado esta publicación que es casi lo mismo:GPUImage Harris Corner Detection en un UIImage existente proporciona una salida de pantalla en negro

Pero no puedo hacer que funcione, y me cuesta entender cómo se supone que esto funciona con imágenes fijas.

Lo que tengo en este punto es esto:

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
}

Esta función siempre regresa[] entonces obviamente no está funcionando.

Un detalle interesante: compilé el proyecto FilterShowcaseSwift a partir de ejemplos de GPUImage, y el filtro no puede encontrar esquinas muy claras, como en una hoja de papel sobre un fondo negro.

Respuestas a la pregunta(1)

Su respuesta a la pregunta