使用paddlehub face_landmark_localization进行面部图像精确处理

人脸关键点检测是人脸识别和分析领域中的关键一步,它是诸如自动人脸识别、表情分析、三维人脸重建及三维动画等其它人脸相关问题的前提和突破口。
paddlehub提供了face_landmark_localization模型,可以快速的提供人脸部68个关键点(人脸轮廓17个点,左右眉毛各5个点,左右眼睛各6个点,鼻子9个点,嘴巴20个点)。
我计划试验在这68个点的基础上,为目标图像进行一个唐代妆容的美化。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200501212047172.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tlbnNoaW41MTYxNjM=,size_16,color_FFFFFF,t_70)

设计思路

利用识别出的关键点进行面部区域划定,然后使用opencv的方式进行填充和图像融合。

代码

import paddlehub as hub
import cv2
import numpy as np
from matplotlib import pyplot as plt
import os
import random
%matplotlib inline

#展示图片效果
def img_show_bgr(image,size=8):
#cv2.cvtColor,plt.imshow,plt.axis
#节省空间,不填代码了
#返回两点中点坐标
def mid_point(p1,p2):
    point=(np.array(p1)+np.array(p2))/2
    point=point.astype(int)
    return (point[0],point[1])
 #返回两点距离
def dis_point(p1,p2):
    x_dis=p1[0]-p2[0]
    x_dis**=2
    y_dis=p1[1]-p2[1]
    y_dis**=2
    return (x_dis+y_dis)**0.5
#肤色判定RGB
def skin_rgbrange(R,G,B):
    skin = 0
                
    if (abs(R - G) > 15) and (R > G) and (R > B):
        if (R > 95) and (G > 40) and (B > 20) and (max(R,G,B) - min(R,G,B) > 15):               
            skin = 1    
        elif (R > 220) and (G > 210) and (B > 170):
            skin = 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值