que poner etiqueta ejemplos cursiva como ios swift2 gpuimage

ios - poner - tags h1 y cursiva ejemplos



Cómo obtener esquinas usando GPUImageHarrisCornerDetectionFilter (1)

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]))) } }

Este código que tiene aquí establece un bloque al que se llama cada fotograma.

Este es un proceso asíncrono, por lo que cuando su función se devuelve nunca se ha llamado y su matriz siempre debe estar vacía. Debe llamarse después de que el marco haya terminado de procesarse.

Para verificar esto, establezca un punto de interrupción dentro de ese bloque y vea si recibe una llamada.

Advertencia de Brad Larson (creador de GPUImage) en los comentarios:

La GPUImage que cree aquí, stillImageSource se desasignará después de que esta función salga y puede causar bloqueos en este caso.

Estoy tratando de obtener los puntos de la esquina de una imagen GPUImageHarrisCornerDetectionFilter utilizando GPUImageHarrisCornerDetectionFilter .

He mirado el código de ejemplo del proyecto, he mirado la documentación y he mirado este post que trata de lo mismo: GPUImage Harris Detection Corner en un UIImage existente da un resultado de pantalla en negro

Pero no puedo hacer que funcione, y me cuesta entender cómo se supone que 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 devuelve [] por lo que obviamente no funciona.

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