GPUImage 过滤器返回 nil
GPUImage Filter Returning nil
我一直在尝试将 GPUImageHoughTransformLineDetector
应用于 Swift 中的 UIImage
,但它什么也没给我,现在几个小时我都不知道我要做什么做错了。
这是我的代码:
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 <<
}
一定是我想念的简单东西,但我现在只是在 "that rut"。感谢理解。
更新:
果然很简单,看我的回答
当你跟随另一个指南时,常识就不那么普遍了。
我会留下这个问题,因为它可能会帮助将来在 Swift 中实施过滤器的人。
变化中:
filter.imageFromCurrentFramebuffer()
至:
blendFilter.imageFromCurrentFramebuffer()
做到了。
我一直在尝试将 GPUImageHoughTransformLineDetector
应用于 Swift 中的 UIImage
,但它什么也没给我,现在几个小时我都不知道我要做什么做错了。
这是我的代码:
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 <<
}
一定是我想念的简单东西,但我现在只是在 "that rut"。感谢理解。
更新:
果然很简单,看我的回答
当你跟随另一个指南时,常识就不那么普遍了。
我会留下这个问题,因为它可能会帮助将来在 Swift 中实施过滤器的人。
变化中:
filter.imageFromCurrentFramebuffer()
至:
blendFilter.imageFromCurrentFramebuffer()
做到了。