Android 多人脸贴图
1. 效果图
2. 前置条件
1. 通过GLSurfaceView 以及自定义Render(OES纹理)绘制相机画面,同时创建FBO纹理,用于进行贴图
2. 同时通过ImageReader读取相机原画面,传入人脸关键点识别,获取关键特征点
3. 人脸关键点以及偏转角度计算
3.1 选取关键点,计算顶点坐标
我们可以选取人脸特点中具备对称的2个点。出现头部方向旋转时,可以通过这两个点来计算出头部倾斜的夹角。
然后利用倾斜角便可以计算出运算后四个顶点坐标
3.2 绘制
glViewport(0,0,width,height)//这里的绘制的GL宽高仍然为全屏幕
贴图的顶点坐标由3.1获取,实现2D贴图绘制即可。这里注意的是使用的FBO纹理,Y轴坐标获取后都需要进行反转
4. 上传2D纹理贴图
此处省略
5. 其他实现思路
5.1 定义glViewPort(x,y,widht,height),直接将其设置为贴图的位置。存在问题:由于此处设置的矩形,在旋转时,便会出现矩形某个方向拉伸变形问题。
5.2 仅定义左下,右下顶点,(左上右上均在2者基础上加入图片高度),通过Matrix矩阵进行旋转,通过测试结果显示会产生形变,效果不好。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!