我在使用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问题!
有什么想法吗?
发布于 2017-10-20 22:47:32
您忘记输入您的十字准线宽度
crosshairGenerator.crosshairWidth = 15.0
并且没有你声明的门槛
发布于 2019-03-07 03:18:43
使Harris-detector对象成为实例属性。
https://stackoverflow.com/questions/43980462
复制相似问题