导航:首页 > 相机摄影 > 如何在相机中瘦脸

如何在相机中瘦脸

发布时间:2022-12-26 05:50:27

A. 黄油相机瘦脸功能在哪

点击正中间的相机图标。

右侧的小女孩图标。

功能。

点击三个圆圈。

即可选择瘦脸,滤镜等选项。

在当今这个注重容貌的时代,拥有一张好看的脸实在是太重要了。在美丽出现之前,人们只能用手机最原始的相机拍照。镜头里的人往往不化妆,不能拍照,甚至比自己更丑,所以他们不会有拍照的欲望。而美容相机的出现,就像普通人的祝福一样,让我们可以在相机里展现出更加美丽的一面,所以越来越多的女孩开始拍照。美不仅适用于相机应用,也适用于直播、短视频和视频通话

B. vivo X21手机拍照怎么瘦脸

vivo X21手机是支持瘦脸功能的,
建议先进入相机中进行拍摄,然后再在相册中查看图片,点击编辑--去美颜--选择瘦脸即可。

C. vivos12相册手动瘦脸在那里

vivos12相册右上角的三个点。
可以打开相机然后点击右上角的三个点。开启语音快门,拍照时说“瘦一点”即可瘦脸。
vivos12支持微信视频通话美颜功能,同时支持低、中、高三档美颜程度选择。

D. 黄油相机怎么瘦脸

黄油相机瘦脸功能如下:

工具:iPhone 12

系统:iOS 13

版本:v8.11.1.10黄油相机

打开黄油相机,点击正中间的相机图标。

E. oppo手机瘦脸怎么设置

ColorOS 5.2及以上版本增加自定义美颜功能:
1、首次启动相机美颜自拍模式,提示用户有自定义美颜参数的选择。用户设置后保存的参数,为个人自定义的美颜。
2、拍照模式下默认AI 拍照,点选自定义美颜图标一次表示选中,再点选一次展开编辑页面,进入自定义编辑模式。
3、自定义编辑模式开放8个功能供调节,磨皮、瘦脸、小脸、下巴、大眼、瘦鼻、补妆、立体。

温馨提示:
自定义美颜同时适用于前置照片、前置贴纸,不支持后置拍摄。
本回答适用于OPPO所有机型。

F. 请问华为相机的瘦脸

G. 小米手机瘦脸功能设置

小米手机瘦脸功能不用单独设置的,手机前置是自带美颜瘦脸的。

打开相机,镜头切换到前置摄像头,也就是自拍模式,美颜功能只在自拍时才会有,如果不用美颜,关掉美颜就可以了。

小米手机是中国科技公司小米科技旗下的智能手机系列品牌,于2011年8月16日在北京发布了首款产品。小米手机一直是性价比的代名词。

小米手机系列被定位为小米的智能手机主力系列,主打中高端市场,重视用户体验和技术创新。小米手机以及后续迭代产品一经推出便销量火爆,曾一度因供不应求导致限量抢购。2011年7月12日小米创始团队正式亮相,宣布进军手机市场,旗下3款产品:MIUI、米聊、小米手机。

H. 抖音在相册选的照片怎么瘦脸

抖音在相册里选出来的照片是不能瘦脸的。可以先瘦完脸,再在抖音相册里选出来。有很多p图软件很好用。

1.醒图

这些软件都很好上手,不失真,很好操作。

I. 仿抖音特效相机之大眼瘦脸

本文是讲解特效相机中的大眼瘦脸的实现,完整源码可查看 AwemeLike 。
要实现瘦脸大眼,首先需要获取到人脸特征点,在本项目中使用的是Face++的人脸识别库,它可以获取到106个人脸特征点,接着再通过变形算法就可以实现了。

项目使用的瘦脸算法是参照这篇文章 在OpenGL中利用shader进行实时瘦脸大眼等脸型微调

textureCoord 表示当前要修改的坐标, originPosition 表示圆心坐标, targetPosition 表示目标坐标, delta 用来控制变形强度。

上述shader方法可以这样理解,首先确定一个以 originPosition 为圆心、 targetPosition 和 originPosition 之间的距离为半径的圆,然后将圆内的像素朝着同一个方向移动一个偏移值,且偏移值在距离圆心越近时越大,最终将变换后的坐标返回。

如果将方法简化为这样的表达式 变换后的坐标 = 原坐标 - (目标坐标 - 圆心坐标) * 变形强度 ,也就是说,方法的作用就是要在原坐标的基础上减去一个偏移值,而 (targetPosition - originPosition) 决定了移动的方向和最大值。

式子中的 变形强度 可以这样表示:

除了项目中使用的算法,还有另外两种脸部变形算法可以使用,一个是基于 Interactive Image Warping 的局部调整算法(其原理可查看 文章 ),我们在项目中使用的算法其实可以看做是它的一个变种,都可以用表达式 变换后的坐标 = 原坐标 - (目标坐标 - 圆心坐标) * 变形强度 来表示,不同之处在于 变形强度 的取值不同。;另一个是基于 Image deformation using moving least squares 的全局点位变形算法(其原理可查看 文章 )。

当我们要使用上述瘦脸算法时,只需要选取多对特征点作为 originPosition 和 targetPosition ,使得它们作用范围覆盖的两个脸颊和下巴,然后通过改变 delta 来控制瘦脸的强度。

在Face++中,获取的106个特征点分布如下

将这106个特征点上传到片元着色器

设置统一的变形强度

指定圆心坐标和目标坐标,共有9对

大眼算法也是参照这篇文章 在OpenGL中利用shader进行实时瘦脸大眼等脸型微调

textureCoord 表示当前要修改的坐标, originPosition 表示圆心坐标, radius 表示圆的半径, delta 用来控制变形强度。
和瘦脸的算法类似,根据 originPosition 和 targetPosition 确定一个圆,圆内的坐标会参与计算,圆外的不变。
圆内的坐标围绕圆心 originPosition 在变化,最终的坐标完全是由 weight 的值决定, weight 越大,最终的坐标变化越小,当 weight 为1,即坐标处于圆边界或圆外时,最终的坐标不变;当 weight 小于1时,最终的坐标会落在原坐标和圆点之间,也就是说最终返回的像素点比原像素点距离圆点更近,这样就产生了以圆点为中心的放大效果。

项目中的 FaceDetector 是一个专门用来处理Face++相关的操作的类,其头文件如下

使用前需要替换Face++的key和secret,在项目中,它的路径是 Face++/MGNetAccount.h ,然后调用授权方法,授权成功之后才能使用face++的人脸检测。

face++接受的是 CMSampleBufferRef 类型的视频帧,但他不支持YUV格式,所以在解码时需要选择BGRA格式。

项目使用 GPUImage 来做解码,但 GPUImage 库在将视频帧解码为BGRA格式时有一些实现问题,所以我们在使用相机和读取视频文件时,一定要使用项目自己创建的 GPUImageFaceCamera 和 GPUImageFaceMovie ,它们分别继承自 GPUImage 的 GPUImageVideoCamera 和 GPUImageMovie ,在内部重写了一些配置方法,使得返回的视频帧格式都是BGRA。

除此以外,这两个类在获取到视频帧之后还会自行调用 FaceDetector 的 - (void)getLandmarksFromSampleBuffer:(CMSampleBufferRef)detectSampleBufferRef; 方法获取人脸信息,使得我们可以在之后的滤镜类中直接使用它解析出来的人脸数据了。

人脸方向是指人脸在视频帧中的逆时针偏移角度,偏移角度为0表示人脸是正的,处于竖直方向。

如果给我们一张人脸的图片,我们的肉眼很容易判断出人脸在图片中的偏移角度,但是传递给face++的是一个来自相机或视频文件视频帧,那么我们应该如何获取人脸的偏移角度呢。

1. 相机拍摄( GPUImageFaceCamera )

当使用相机拍摄时,相机产生的视频帧默认情况下和我们看到的并不一样,可以通过 AVCaptureConnection 类的属性 videoOrientation 来指定视频帧的方向,其取值有如下几种

上面提到的原图就是我们肉眼看到的场景,它和相机或视频文件产生的视频帧可能是不一样的。

因为项目是通过 GPUImage 库来调用相机的,而 GPUImage 并没有设置这个属性——它使用的是默认值,所以项目使用的是这个属性的默认值。(使用默认值可能是性能原因,因为设置这个属性会导致系统应用一个相应matrix来旋转视频帧,GPUImage选择将旋转操作放到了GPU中执行)

后置摄像头

在使用后置摄像头时, videoOrientation 属性的默认值是 ,也就是说当手机水平方向放置,且home键在右边时,相机产生的图片和原图一致。
根据这个,我们可以得出下面两个变换图,左边的图片代表原图(实际场景),右边代表相机产生的视频帧,也是传递给face++的视频帧,每一行代表一个放置手机的方向。

我们需要根据上面两个图来得到人脸的偏移角度

首先我们需要设置了一个前提,人脸在原图中总是处于竖直方向的,即偏移角度为0,这其实是符合逻辑的,我们的脑袋不可能歪到大于90度。
然后我们可以将上图中的3和4看做是人脸,计算出右图中的3和4的旋转角度,就可以得出在当前手机方向下人脸的偏移角度。

最终我们得出了下面这个对照表

前置摄像头

使用前置摄像头时, videoOrientation 的默认值为 ,同样的,当手机水平方向放置进行拍摄,home键在左边时,相机产生的图片和原图是水平镜像的关系,所以还需要额外做一个水平方向的翻转,这时的图片才和原图一样。

同样给出手机处于竖直方向或水平方向拍摄时,原图和视频帧的变换

手机方向和人脸偏移角度的对照表

相比后置摄像头,使用前置摄像头时需要多做一个额外的水平翻转,由于face++并没有提供设置水平翻转的接口,所以在识别前置摄像头产生的图片时,face++返回的人脸数据有一些小问题——人脸特征点的排列顺序左右颠倒了,不过这个问题是可以忽略的,因为人脸两边是对齐的;还有一个问题就是欧拉角的方向会取反,这个我们后面会讲到怎么解决。

检测手机的方向

由于App只支持 Portrait 方向,所以无法使用类似 - (void):(UIInterfaceOrientation)toInterfaceOrientation ration:(NSTimeInterval)ration 方法来获取手机方向。
一个更好的方法是通过 CoreMotion 检测xyz方向的加速度,以此来判断当前手机的朝向

2. 从视频文件获取( GPUImageFaceMovie )

通过 AVAssetTrack 的 preferredTransform 属性获得变换矩阵,再通过矩阵来判断视频的旋转角度,也即是人脸的旋转角度。

face++返回的人脸数据会在哪里被使用?

GPUImage 会将视频帧上传到纹理中,然后将纹理传递给后续的 targets , targets 是指那些遵守了 GPUImageInput 协议的类,在这里我们简称它们为滤镜类。

face++返回的人脸数据只会被使用在这些滤镜类中,这些滤镜类中的纹理图片和传递给face++做人脸检测的视频帧是不一样的,也就是说生成人脸数据时的参考坐标系和使用人脸数据时的参考坐标系是不同的。所以在使用人脸数据之前,我们还需要对人脸数据做一些转换操作。

问题是如何转换

之前在设置人脸方向时,我们已经了解了视频帧,那么滤镜类中的纹理又是什么样的,可以参考下面这张图

第一行使用后置摄像头,第二行使用前置摄像头;
第一列和第二列分别表示原图和相机产生的视频帧;
第三列表示视频帧上传到纹理时的情形,因为OpenGL的原点是在左下角,所以需要上下颠倒;
第四列表示变换后的纹理图片,也就是滤镜类中的纹理图片。

( GPUImage 是如何从上图的第三列变换到第四列的,查看 GPUImageVideoCamera 的方法 可知,按照本项目对 GPUImageVideoCamera 的配置( outputImageOrientation=, _=true ,前置),当使用后置摄像头时,用来指定旋转的枚举是 kGPUImageRotateRight ,当使用前置摄像头时,用来指定旋转的枚举是 ,这两个枚举的名字刚好是反向变换——第四列变换到第三列所需要的步骤)

特征点坐标

假设 point 表示使用后置摄像头时Face++的特征点坐标,对应上图的第一行的视频帧,它是以4号位作为原点,也就是说 point 的值是相对于4号位的,然后我们再看第一行的最终纹理图片,原点是3号位,4号位变换到右下角了,我们需要做的是将 point 变换到以3号位为原点。

所以变换后的 point 应该等于 (height - point.y, point.x) ,其中width是第二列视频帧的4号位和2号位所在的那条边的长度,height是视频帧的4号位和3号位所在的那条边的长度。

特征点变换规则如下

欧拉角

faceinfo 的三个属性 pitch 、 yaw 、 roll 分别表示人脸在未变换的视频帧中围绕x、y、z轴的旋转角度。

J. 美颜相机如何把脸p肥

瘦脸往负数点。
找到美颜相机中的瘦脸,往负数拖拽即可。
美颜相机是一款把手机变自拍神器的APP,由厦门美图网科技有限公司开发。

阅读全文

与如何在相机中瘦脸相关的资料

热点内容
微信改变我们哪些生活 浏览:1229
创造与魔法沙漠的动物在哪里 浏览:1230
篮球鞋网面为什么会破 浏览:943
怎么拼升降板篮球 浏览:424
小型宠物猪多少钱 浏览:836
音乐文化课哪个好 浏览:662
到日本旅游如何报团 浏览:980
不在篮球场运球该在哪里练 浏览:961
台湾哪里能买到宠物 浏览:1031
小动物怎么画才最好看 浏览:904
中西文化和西方网名有什么区别 浏览:1199
养宠物狗一般养多少年 浏览:877
广州黄埔哪里有卖宠物兔的 浏览:767
小米10怎么敲击背部打开相机 浏览:687
渔家文化目的有哪些内容 浏览:1064
海洋中发光的动物都有哪些 浏览:1138
如何消除美颜相机的标志 浏览:1048
篮球罚球为什么不往上抛 浏览:597
天香公园宠物医院洗澡在哪里 浏览:1120
怎么提高中国文化自信 浏览:257