'GPUImagePoissonBlendFilter produces weird result
I am trying to use GPUImage (Objective-C) pod in order to blend two images with GPUImagePoissonBlendFilter in Swift project. The result is kinda weird and I don't understand how to fix it.
Sample project:
What is going on in code:
Load Back image into backImage
Load Front image into frontImage
Blend images with GPUImagePoissonBlendFilter
Result put to imageView
class ViewController: UIViewController { private let imageView: UIImageView = { let image = UIImage(named: "back") let imageView = UIImageView(image: image) imageView.contentMode = .scaleAspectFill imageView.clipsToBounds = true imageView.translatesAutoresizingMaskIntoConstraints = false imageView.layer.borderWidth = 1 imageView.layer.borderColor = UIColor.green.cgColor return imageView }() override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = UIColor.black view.addSubview(imageView) NSLayoutConstraint.activate([ imageView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 10), imageView.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor) ]) guard let backImage = imageView.image else { return } guard let frontImage = UIImage(named: "front") else { return } let backImageSource = GPUImagePicture(image: backImage) let frontImageSource = GPUImagePicture(image: frontImage) let poisionFilter = GPUImagePoissonBlendFilter() poisionFilter.mix = 0.9 poisionFilter.numIterations = 100 backImageSource?.addTarget(poisionFilter, atTextureLocation: 0) frontImageSource?.addTarget(poisionFilter) backImageSource?.processImage() frontImageSource?.processImage() poisionFilter.useNextFrameForImageCapture() let filterResult = poisionFilter.imageFromCurrentFramebuffer() imageView.image = filterResult }}
Can anyone point what I am doing wrong here ?
Thanks in advance !
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
