Como obter cantos usando GPUImageHarrisCornerDetectionFilter
Estou tentando obter os pontos de canto de uma imagem estática usandoGPUImageHarrisCornerDetectionFilter
.
Analisei o código de exemplo do projeto, analisei a documentação e analisei este post sobre a mesma coisa:A detecção de canto GPUImage Harris em uma UIImage existente fornece uma saída de tela preta
Mas não posso fazê-lo funcionar - e tenho dificuldade em entender como isso deve funcionar com imagens estáticas.
O que tenho neste momento é o seguinte:
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 função sempre retorna[]
então obviamente não está funcionando.
Um detalhe interessante - compilei o projeto FilterShowcaseSwift a partir de exemplos da GPUImage, e o filtro não consegue encontrar cantos muito claros, como em uma folha de papel em um fundo preto.