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.