An approach to the implementation of camera real-time filter on Android platform (11)--real-time Beauty Filter

Source: Internet
Author: User
<span id="Label3"></p><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px">The previous chapter completed the processing of the image, the simple algorithm process optimization, can achieve a fast speed, but not for real-time Beauty. After the experiment, if only to deal with the Y signal scheme, the radius limit is about 5-10, more than 10 obviously feel the lag, but for the preview resolution of 1920x1080, take 10 for the radius is difficult to get the ideal Effect. Even reducing the resolution to 1280x720 is Passable. So it is very difficult to directly apply to mobile real-time Processing.</span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px">On the other hand, the Character's normal skin, color should be red, so it will lead to the image of the red channel is bright, so that the red channel retains less detail, in contrast, the green channel retains more details, so, in general we can also only use Filter green channel to achieve real-time grinding skin. Here is a brief introduction to the Idea:</span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"><strong>1. Remove the green channel and blur the green channel, such as Gaussian blur, to get the blurred value samplecolor:</strong></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px">Create an array of length 20~25 in the vertex shader as a point where the fragment shader needs to fetch data</span><span style="font-size:14px; white-space:pre"></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial, ' Courier New ', courier, arial, monospace, ' Microsoft Yahei '; white-space:pre-wrap; word-wrap:break-word; Color:rgb (51,51,51); line-height:24px; Background-color:rgb (255,255,255) "><span style=" white-space:pre "> </span> <pre name=" code " class=" CPP "> varying VEC2 blurcoordinates[20]; </pre> <pre name="code" class="cpp">blurcoordinates[0] = inputtexturecoordinate.xy + singlestepoffset * VEC2 (0.0,-10.0); ..... blurcoordinates[19] = inputtexturecoordinate.xy + singlestepoffset * vec2 (4.0, -4.0); </span> </pre> <span style="font-size:14px" in the < span> <span style="font-size:14px"> The fragment shader sequentially takes the green channel value of these points, times the weight, and finally divides the total weight, resulting in the blurred green channel value </span> </span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"><strong>2. With the original green channel value minus samplecolor, plus 0.5 (I.E. 128), 1+2 Two steps is the High-contrast retention in ps:</strong></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre name="code" class="cpp">VEC3 Centralcolor = texture2d (inputimagetexture, texturecoordinate). rgb;float highpass = centralcolor.g-samplecolor + 0 .5;</pre><br></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"><strong>3. The above result values are 3-5 times highlighted (see chapter seventh, "overlay" Mixed mode), This step can make the noise more prominent:</strong></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre name="code" class="cpp"> If (color <= 0.5) {color = color * Color * 2.0;} Else{color = 1.0-((1.0-color) * (1.0-color) * 2.0);</pre><span style="font-size:14px">After the 1-3 figure:</span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"><strong>4. Calculate the grayscale value of the original, the formula is 0.299*r + 0.587*g + 0.114*b:</strong></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre name="code" class="cpp"> Const HIGHP VEC3 W = vec3 (0.299,0.587,0.114); float lumance = dot (centralcolor, W);</pre></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px">To get a grayscale image:</span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"><strong>5. Use the grayscale value as a threshold to exclude Non-skin parts and, based on the grayscale values, synthesize the original and 1-3 result graphs:</strong></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre name="code" class="cpp">float alpha = Pow (lumance, 0.333333); vec3 smoothcolor = centralcolor + (centralcolor-vec3 (HIGHPASS)) *alpha*0.1;</ Span></pre><span style="font-size:14px">The original RGB value compared with the result of high contrast, the greater the noise, the greater the result after subtracting the two, adding a certain value on the basis of the original result, to improve the brightness and eliminate the noise.<br>The second parameter in the POW function can be adjusted (1/3~1), the lower the value, the greater the alpha, the more obvious the skin effect, modify the value can be used as a beauty degree</span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"><strong>6. Increase brightness for mixed results:</strong></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"><strong></strong></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"><strong>7. Use grayscale values as transparency to mix the original and mixed results, and adjust the saturation:</strong></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px">Original and result diagram:</span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"><strong>Above with pictures to give examples, the rest is to turn on the camera to switch to the front to see the effect of the ~</strong></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px">Code address: (20160108 Japanese will be uploaded at a later Date)</span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px">Https://github.com/wuhaoyu1990/MagicCamera/tree/master/MagicFilter/res/raw</span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px">BEAUTIFY_FRAGMENT.GLSL and BEAUTIFY_VERTEX.GLSL</span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; line-height:24px; background-color:rgb(255,255,255)"><span style="font-size:14px"><strong><span style="color:rgb(255,0,0)">Other than that:</span></strong></span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; color:rgb(51,51,51); line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial, ' Courier New ', courier, arial, monospace, ' Microsoft Yahei '; white-space:pre-wrap; word-wrap:break-word; Color:rgb (51,51,51); line-height:24px; Background-color:rgb (255,255,255) "><span style=" font-size:14px ">---------------------------------------------- ------------------------------------------------------</span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial, ' Courier New ', courier, arial, monospace, ' Microsoft Yahei '; white-space:pre-wrap; word-wrap:break-word; line-height:24px; Background-color:rgb (255,255,255) "><pre id=" best-content-1083821653 " class=" best-text mb-10 " style=" margin-top:0px ; margin-bottom:10px; Color:rgb (51,51,51); padding:0px; font-family:arial, ' Courier New ', courier, arial, monospace, ' Microsoft Yahei '; white-space:pre-wrap; word-wrap:break-word; Background-color:rgb (255,255,255) "><span style=" font-size:14px ">magiccamera address </span> </pre> <span style=" color: RGB (51,51,51) "> based on gpuimage, Opengl+jni developed and optimized gpuimage preview image processing, Eliminating the time spent on format conversion and improving efficiency </span> </pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; line-height:24px; background-color:rgb(255,255,255)"><span style="color:rgb(51,51,51)">40+ filters and real-time beauty features are implemented using GLSL</span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; line-height:24px; background-color:rgb(255,255,255)"><span style="color:rgb(51,51,51)">Achieve a photo peeling and whitening function</span></pre></pre><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; line-height:24px; background-color:rgb(255,255,255)"><pre id="best-content-1083821653" class="best-text mb-10" style="margin-top:0px; margin-bottom:10px; padding:0px; font-family:arial,‘courier new‘,courier,宋体,monospace,‘Microsoft YaHei‘; white-space:pre-wrap; word-wrap:break-word; line-height:24px; background-color:rgb(255,255,255)"><strong><span style="color:rgb(255,0,0)"><u><span style="font-size:24px">Welcome to the link click on the top right corner star</span></u></span></strong></pre></pre><p><p>An approach to the implementation of camera real-time filter on Android platform (11)--real-time Beauty Filter</p></p></span>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.