почему не может отфильтровать второй раз gpuimage2? - PullRequest
0 голосов
/ 28 сентября 2018

Я использую 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

почему после первого раза обратного вызова нет?Помогите мне, пожалуйста.Я сделал все, что мог, но это невозможно.спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...