我一直在尝试将GPUImageHoughTransformLineDetector
应用到Swift中的UIImage
,但它没有给我任何东西,现在几个小时我无法弄清楚我做错了什么。< / p>
继承我的代码:
func lineDetection(image: UIImage)-> UIImage {
let stillImage = GPUImagePicture(image: image)
let filter = GPUImageHoughTransformLineDetector()
let lineGenerator = GPUImageLineGenerator()
lineGenerator.forceProcessingAtSize(image.size)
lineGenerator.setLineColorRed(1.0,green: 0.0, blue: 0.0)
filter.linesDetectedBlock = { (lineArray:UnsafeMutablePointer<GLfloat>, linesDetected:UInt, frameTime:CMTime) in
lineGenerator.renderLinesFromArray(lineArray, count:linesDetected, frameTime:frameTime)
}
stillImage.addTarget(filter)
let blendFilter = GPUImageAlphaBlendFilter()
blendFilter.forceProcessingAtSize(image.size)
let gammaFilter = GPUImageGammaFilter()
stillImage.addTarget(gammaFilter)
gammaFilter.addTarget(blendFilter)
lineGenerator.addTarget(blendFilter)
blendFilter.useNextFrameForImageCapture()
stillImage.processImage()
return filter.imageFromCurrentFramebuffer() // returns always nil <<
}
一定是我想念的简单的东西,但我现在只是在“那个车辙”。谢谢你的理解。
更新
果然很简单,请参阅我的回答
当你跟随另一个指南时,常识并不常见。
我会留下这个问题,因为它可能会帮助将来在Swift中实现过滤器。
答案 0 :(得分:1)
改变:
filter.imageFromCurrentFramebuffer()
为:
blendFilter.imageFromCurrentFramebuffer()
做到了。