I am trying to get the corner points from a still image using GPUImageHarrisCornerDetectionFilter
.
I have looked at the example code from the project, I ha
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])))
}
}
This code you have here sets a block that gets called every frame.
This is an asynchronous process so when your function returns that has never been called yet and your array should always be empty. It should be called after the frame has finished processing.
To verify this, set a breakpoint inside that block and see if it gets called.
Warning from Brad Larson (creator of GPUImage) in the comments:
The GPUImage you create here stillImageSource
will be deallocated after this function exits and may cause crashes in this case.