0

我有一个绿色背景的视频,我想在实时摄像机视图上显示它并删除绿色背景。我还想在单独的视图中显示它,以便用户能够移动或调整视频大小。GPUImage 有可能吗?您能描述执行此操作所需的步骤吗?

4

1 回答 1

0

是的,有可能!您可以按如下方式设计过滤器链:

GPUImageVideoCamera --> your GPUImageTwoInputFilter --> live camera GPUImageView
Your GPUImageMovie --> your GPUImageTwoInputFilter
Your GPUImageMovie --> separate GPUImageView

您必须编写自己的 GPUImageTwoInputFilter 以在实时摄像头 (inputImageTexture) 上叠加绿色背景视频 (inputImageTexture2)。在 glsl 片段着色器中,在 main 中添加以下代码:

texel = texture2D(inputImageTexture, textureCoordinate);
texel2 = texture2D(inputImageTexture2, textureCoordinate);
if (texel2.g > Tg && texel2.r < Tr && texel2.b < Tb) {
    gFragColor = texel;
} else {
    gFragColor = texel2;
}

其中 Tr, Tg, Tb 是判断哪个是绿色背景的阈值

于 2017-03-09T10:07:59.820 回答