最后编辑于2022-04
PaddleHub开源了人脸关键点检测模型face_landmark_localization。人脸关键点检测是人脸识别和分析领域中的关键一步,它是诸如自动人脸识别、表情分析、三维人脸重建及三维动画等其它人脸相关问题的前提和突破口。该模型转换自 https://github.com/lsy17096535/face-landmark ,支持同一张图中的多个人脸检测。它可以识别人脸中的68个关键点。代码只要令人惊叹的2行:
module = hub.Module(name="face_landmark_localization")
result = module.keypoint_detection(images=[src_img])
效果如图所示:
常见的美颜功能有美白、磨皮、祛斑、装饰等等,下面的“美颜”可能更应该称之为“丑颜”,是在AI Studio示例教程( https://aistudio.baidu.com/aistudio/projectdetail/389512 )基础上改造而来。 首先利用PaddleHub人脸关键点检测模型识别人脸中的68个关键点,然后提取出其中嘴周围的关键点,找到左右嘴角的位置,姑且称为A、B点。那么线段AB的长度就决定了新的嘴的大小,AB的角度决定了新的嘴的倾斜角。以此就可以把一张搞笑的嘴巴的图片贴到原图上,形成完整的搞笑图。搞笑用的嘴部图片实际是一种搞笑奶嘴。
# 计算嘴的倾斜角
if abs(right_point[0]-left_point[0])<0.1:
if right_point[1]>left_point[1]:
angl = 90
else:
angl = -90
else:
angl = math.atan( -(right_point[1]-left_point[1])/(right_point[0]-left_point[0]) )*180/math.pi
# 嘴 宽度
new_w = math.sqrt( (right_point[1]-left_point[1])**2 + (right_point[0]-left_point[0])**2 )
获取嘴部图片后旋转+缩放:
imgMouth = Image.open(mouth_imp_path)
w,h = imgMouth.size
imgMouth = imgMouth.resize( (int(new_w),int(h*new_w/w) ), Image.ANTIALIAS )
imgMouth = imgMouth.rotate( angl,expand=True )
可用的奶嘴图片包括:
…………
后边贴不上了,论坛图片审核说是恶心内容。
然后随机选图片贴上:
res_mouths =[ "_teeth.png","_teeth-x6-1.png","_teeth-x6-2.png","_teeth-x6-3.png","_teeth-x6-4.png","_teeth-x6-5.png","_teeth-x6-6.png","m-1.png","m-2.png","m-3.png","m-4.png" ]
res_faces = [ "test_sample.jpg","shou.jpg" ]
import random
show_point( res_faces[random.randint(0,len(res_faces)-1)] , res_mouths[random.randint(0,len(res_mouths)-1)] )
得到的一个例子(感谢百度例程提供图片):
AI Studio 项目,里面有视频的效果: https://aistudio.baidu.com/aistudio/projectdetail/415283
收藏
点赞
0
个赞
请登录后评论
TOP
切换版块
感觉很不错
除非被本人发现
带头示范,应该不会。
这个和你做的那个贴纸的项目异曲同工~~~
不会被打么?哈哈
好玩,以后同学聚会的照片可以做此处理
哈哈哈,一键搞事情