GPUImage ChromaKeyBlendFilter

问题描述 投票:1回答:1

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

ios swift gpuimage
1个回答
0
投票
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)")
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.