我正在使用gpuimage2,但是有一个难题。我试图在3个月内解决问题,但我可能听不懂。
以下是我在CameraViewController中的代码 我捕获了照片,并将图像传递给ImageFilterViewController。
let pictureOutput = PictureOutput() (self.filterOperation?.filter)!
--> pictureOutput
guard let destVC = self.storyboard?.instantiateViewController(withIdentifier: "ImageFilterViewController") as? ImageFilterViewController else { return }
pictureOutput.imageAvailableCallback = { image in
destVC.stillImage = image
destVC.pictureOutput = pictureOutput
DispatchQueue.main.async {
self.navigationController?.pushViewController(destVC, animated: true)
}
}
}
`
以下是ImageFilterViewController代码
`
override func viewDidLoad() {
super.viewDidLoad()
...
let filterImage = stillImage.filterWithOperation(filter)
}
`
第一次没有问题。我可以得到过滤后的图像,但是如果我回到CameraViewController 并再次捕获,没有经过过滤的图像。 我检查了stillImage和filter不是NIL。
我跟踪了代码,并检查imageAvailableCallback在第二次没有回调。
` public func filterWithPipeline(_ pipeline:(PictureInput, PictureOutput) -> ()) -> UIImage? {
let picture = PictureInput(image:self)
var outputImage:UIImage?
let pictureOutput = PictureOutput()
pictureOutput.onlyCaptureNextFrame = false
pictureOutput.imageAvailableCallback = {image in
outputImage = image
}
pipeline(picture, pictureOutput)
picture.processImage(synchronously:true)
return outputImage
}`
我添加了以下代码,这些代码在捕获后执行,但是没有用。
videoCamera.removeAllTargets()
blendImage?.removeAllTargets()
filterOperation = nil
blendImage = nil
为什么第一次之后没有回调?请帮我。我已竭尽所能,但这是不可能的。 谢谢。