世界杯谁家球队人气旺?一键为自家球队打call!

基于PaddleHub人脸关键的检测的脸颊物品粘贴

效果展示

声明:以上均为展示,请不要上升到国家/球队/个人层面

数据写入

内容范围说明genre0,1,20:左边单侧 1:右边单侧 2:双侧flagimg地址贴图地址faceimg地址人物正脸地址(脸要尽可能明显)toflagimg地址另外一侧贴图地址(右侧)

genre = 2 # 0:左边单侧 1:右边单侧 2:双侧

flagimg = './agt.png' # 贴图地址

faceimg = './p2c_photo.png' # 人物地址

toflagimg = './bx.png' # 另外一侧贴图地址(右侧)

1.0、PaddleHub及PaddleGAN导入及函数定义

!pip install -U paddlehub

!hub install face_landmark_localization==1.0.2

# 安装PaddleGAN的pip包,即可使用api预测方式

!pip install --upgrade ppgan

!pip install dlib==19.22.0 -i https://pypi.douban.com/simple

import paddlehub as hub

import cv2

import os

face_landmark = hub.Module(name="face_landmark_localization")

result = face_landmark.keypoint_detection(images=[cv2.imread(faceimg)])

import numpy as np

from PIL import Image

import cv2

import numpy as np

from math import sqrt

def sjb_hand(result1, flagimg, faceimg, select):

result1 = result[0]['data'][0]

pts = []

def around(select):

order = [[2, 30, 3, 31], [30, 31, 16, 15]]

order = order[select]

for o in order:

tx = int(result1[o-1][0])

ty = int(result1[o-1][1])

pts.append([tx, ty])

x = []

y = []

for pt in pts:

x.append(pt[0])

y.append(pt[1])

# x = tuple(x)

# y = tuple(y)

x1 = min(x)

y1 = min(y)

x2 = max(x)

y2 = max(y)

# print(x1, x2, y1, y2)

return x1, x2, y1, y2

x1, x2, y1, y2 = around(select)

img = Image.open(flagimg)

# print(((x2 - x1) // 2), int((y2 - y1) * 1.2))

reim=img.resize((((x2 - x1) // 2), int((y2 - y1) * 1.2))) # 宽*高

reim.save('newflagimg.png')

im = cv2.imread(faceimg)

obj = cv2.imread('newflagimg.png')

mask = 255 * np.ones(obj.shape, obj.dtype)

# print(im.shape, obj.shape)

center = (int(x1+(x2-x1)//2), y1+(y2-y1)//2)

mixed_clone = cv2.seamlessClone(obj, im, mask, center, cv2. NORMAL_CLONE)

cv2.imwrite("inputimg.jpg", mixed_clone)

2.0 图像动漫化处理

#生成动画头像

from ppgan.apps import Photo2CartoonPredictor

%cd /home/aistudio

p2c = Photo2CartoonPredictor(output_path='/home/aistudio/result/')

p2c.run(faceimg)

3.0 物品粘贴实现并展示

if genre == 0:

sjb_hand(result, flagimg, './result/p2c_photo.png', 0)

os.rename("./inputimg.jpg", './newphoto.jpg')

sjb_hand(result, flagimg, './result/p2c_cartoon.png', 0)

os.rename("./inputimg.jpg", './newcartoon.jpg')

elif genre == 1:

sjb_hand(result, flagimg, './result/p2c_photo.png', 1)

os.rename("./inputimg.jpg", './newphoto.jpg')

sjb_hand(result, flagimg, './result/p2c_cartoon.png', 1)

os.rename("./inputimg.jpg", './newcartoon.jpg')

elif genre == 2:

tofaceimg = "inputimg.jpg"

sjb_hand(result, flagimg, './result/p2c_photo.png', 0)

sjb_hand(result, toflagimg, tofaceimg, 1)

os.rename("./inputimg.jpg", './newphoto.jpg')

sjb_hand(result, flagimg, './result/p2c_cartoon.png', 0)

sjb_hand(result, toflagimg, tofaceimg, 1)

os.rename("./inputimg.jpg", './newcartoon.jpg')

from PIL import Image

Image.open('newcartoon.jpg')

from PIL import Image

Image.open('newphoto.jpg')

项目报错原因预测及解决方案

1、 dlib安装失败,请在GPU环境进行

2、项目失败,文件不存在。请查看是否添加图片并修改有关的地址链接

3、2.0动漫处理报错,原因极有可能是1中的安装失败或者图片脸部不够明显,建议更换GPU然后换图片

4、其他,可以留言进行询问,会第一时间回复

作者简介

作者:三岁 经历:自学python,现在混迹于paddle社区,希望和大家一起从基础走起,一起学习 Paddle csdn地址:https://blog.csdn.net/weixin_45623093/article/list/3 我在AI Studio上获得至尊等级,点亮9个徽章,来互关呀~ https://aistudio.baidu.com/aistudio/personalcenter/thirdview/284366

传说中的飞桨社区最菜代码人,让我们一起努力! 记住:三岁出品必是精品 (不要脸系列

此文章为搬运 原项目链接