GPUImage2:HarrisCornerDetector没有调用回调

时间:2017-05-15 13:10:35

标签: ios swift gpuimage

使用GPUImage实现角点检测时遇到了一个奇怪的问题。

我正在尝试使用Brad的下载过滤器模板作为起点,但是虽然我可以生成图像和角点的合成视图(作为单个白色像素),但当我尝试添加十字准线时生成器,永远不会调用回调函数。

在我的简化示例中,我将输出视图配置为RenderView,将videoCamera定义为Camera?

    do {
        videoCamera = try Camera(sessionPreset:AVCaptureSessionPreset640x480, location:.backFacing)
        videoCamera!.runBenchmark = true
    } catch {
        videoCamera = nil
        print("Couldn't initialize camera with error: \(error)")
    }

    let filter = HarrisCornerDetector()

    let crosshairGenerator = CrosshairGenerator(size: Size(width: 480, height: 640))

    filter.cornersDetectedCallback = { corners in
        crosshairGenerator.renderCrosshairs(corners)
    }
    videoCamera! --> filter

    let blendFilter = AlphaBlend()
    videoCamera! --> blendFilter --> renderView
    //crosshairGenerator --> blendFilter    // INPUT 1: if I add this line, the callback never happens
    filter --> blendFilter                  // INPUT 2: with this input to blendFilter, the callback is good

如图所示,回调函数按预期调用,我看到输出中有小白点。

如果删除注释以启用INPUT 1并注释掉INPUT 2,则显示屏仅显示相机,并且永远不会调用角点检测回调。

Brad提供的示例项目在我的设备上运行,因此我知道没有硬件或iOS问题!

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您忘记输入十字准线宽度

crosshairGenerator.crosshairWidth = 15.0

并且没有您声明的阈值

答案 1 :(得分:0)

使Harris-detector对象成为实例属性。