GPUImage ChromaKeyBlendFilter - PullRequest
       12

GPUImage ChromaKeyBlendFilter

0 голосов
/ 20 февраля 2019

Я использую GPUImageChromaKeyBlendFilter и получаю нежелательный вывод.Либо у меня правильный ввод с камеры, либо мое фоновое изображение смешивается не одновременно.Я имею размер 930x620, и мое фоновое изображение имеет размер 1200x800, который масштабируется до 930x620 при сохранении соотношения сторон.

filter = GPUImageChromaKeyBlendFilter()
filter?.setColorToReplaceRed(0.0, green: 1.0, blue: 0.0)
filter?.thresholdSensitivity = CGFloat(effectSlider)
filter?.thresholdSensitivity = 0.40
filter?.smoothing = 0.14

При использовании нижеприведенного фона фоновое изображение отображается правильно, однако предварительный просмотр изображениярастягивается, если я удаляю изображение предварительного просмотра правильно, но фон перекошен.

filter?.forceProcessing(at: overlayImage.frame.size) (the overlay is again 1200x800/930x620)

Я использую kGPUImageFillModePreserveAspectRatioAndFill.

1 Ответ

0 голосов
/ 04 марта 2019
func chromaKeyBlendOneVideoWithTexture() {
    // background texture
    let textureImage = UIImage(named: "texture.jpg")!
    let sourceImage = PictureInput(image: textureImage)
    sourceImage.processImage()

    do {
        let movieUrl = Bundle.main.url(forResource: "video", withExtension: "mp4")!
        let movieInput = try MovieInput(url: movieUrl, playAtActualSpeed: true)

        let chromaKeyBlendFilter = ChromaKeyBlend()

        // first add green channel video than background texture.
        movieInput --> chromaKeyBlendFilter --> renderView
        sourceImage --> chromaKeyBlendFilter

        movieInput.start()
    } catch {
        print("Couldn't process movie with error: \(error)")
    }
}
...