最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android OpenGL ES實現(xiàn)簡單綠幕摳圖

 更新時間:2022年06月23日 14:55:17   作者:deep_sadness  
這篇文章主要為大家介紹了Android OpenGL ES實現(xiàn)簡單綠幕摳圖示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

實現(xiàn)綠幕摳圖,其實想法很簡單。 這里簡單粗暴的使用著色器替換。

OES Filter

直接實現(xiàn)在相機預(yù)覽上的Shader

#extension GL_OES_EGL_image_external : require
precision mediump float;
                                
varying vec2 vTextureCoordinate;
uniform samplerExternalOES uTexture;

const float pixel = 30.0;
void main() {
    vec4 tc = texture2D(uTexture, vTextureCoordinate);
    float r = tc.x * 255.0;
    float g = tc.y * 255.0;
    float b = tc.z * 255.0;

    if(g>140.0 && r<128.0 && b<128.0){
        tc.x =1.0;
        tc.y =1.0;
        tc.z =1.0;
         tc.w =0.0;
    }else{
     tc.w =1.0;
    }

    gl_FragColor = tc, 1.0;
}

這里的關(guān)鍵是,判斷顏色的范圍。這里簡單的認定 g>140.0 && r<128.0 && b<128.0 時為綠色。當(dāng)是綠色的時候,就將其顏色換成白色。同時alpha值設(shè)置為0.0

BlendShader Filter

這個Shader是將背景的紋理,進行貼圖,貼到我們扣的這部分圖上。

precision mediump float;

varying vec2 vTextureCoord;
varying vec2 vExtraTextureCoord;

uniform sampler2D uTexture;
uniform sampler2D uExtraTexture;

void main() {
    vec4 base = texture2D(uTexture, vTextureCoord);
    vec4 overlay = texture2D(uExtraTexture, vExtraTextureCoord);
    vec4 outputColor;
    if(base.r==1.0 && base.g==1.0 && base.b==1.0 && base.a==0.0){
      outputColor.r = base.a*base.r + overlay.r * (1.0 - base.a);
      outputColor.g = base.a*base.g + overlay.g * (1.0 - base.a);
      outputColor.b = base.a*base.b + overlay.b * (1.0 - base.a);
      outputColor.a = base.a;
    }else{
       outputColor.r = base.r;
       outputColor.g = base.g;
       outputColor.b = base.b;
       outputColor.a = base.a;
    }
    gl_FragColor = outputColor;
}

這個shader就是加載了兩個貼圖。一個是來自上面相機的FBO的OffscreenTextureId,一個是來自我們另外的背景貼圖。 這段代碼就算,如果是辨認到之前我們處理的區(qū)域的話,就將兩個圖片貼加到一起,如果是范圍內(nèi),就用原來的圖片。

簡單的綠幕摳圖很簡單,只是判斷到對應(yīng)的顏色,然后將對應(yīng)的貼圖貼到這個部分上,就可以了。

最后的效果

  • 屏幕中的原圖

最后的效果

缺陷

邊緣情況比較明顯。顯示比較突兀。 我們可以做的更好嗎?

更多關(guān)于Android OpenGL ES綠幕摳圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

昭觉县| 苍山县| 丘北县| 长葛市| 新宾| 普陀区| 柘城县| 普洱| 洮南市| 长岛县| 青阳县| 湘乡市| 黔西县| 巴南区| 普洱| 和田市| 阜平县| 博野县| 平定县| 香格里拉县| 西城区| 共和县| 离岛区| 左权县| 察雅县| 定边县| 铜川市| 红桥区| 贵州省| 襄城县| 阜南县| 庆安县| 资阳市| 安新县| 灵山县| 黄梅县| 津市市| 淳化县| 桐庐县| 桑植县| 马龙县|