为什么不能过滤第二次gpuimage2?

时间:2018-09-28 10:51:55

标签: swift filter

我正在使用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

为什么第一次之后没有回调?请帮我。我已竭尽所能,但这是不可能的。 谢谢。

0 个答案:

没有答案