How to get corners using GPUImageHarrisCornerDetectionFilter

后端 未结 1 1325
暖寄归人
暖寄归人 2021-02-12 12:09

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

相关标签:
1条回答
  • 2021-02-12 12:38
    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.

    0 讨论(0)
提交回复
热议问题