肖战发型适配教程来啦!说到肖战,让人不得不想到他可盐可甜的颜值,肖战的《陈情令》使得他爆红了一把,也有不少人因此成为了肖战的迷妹。的确,从外形上看的话,也算是实打实的帅哥了;那么,长得这么帅,有没有什么秘诀呢?很多人不知道看似随随便便站在那就很吸睛的肖战,不同的发型又给人完全不同的感觉。

今天之后你就不用再去找  老师设计发型了,本篇博文就教你基于 “ 换脸技术” 换肖战几款他常见的发型,快来看看你最适合哪一款叭~~~

目录

1 导入库

2 从图像中找人脸

3 换脸

4 运行结果

5 整体代码


1 导入库

import json
import requests
import simplejson
import base64

2  从图像中找人脸

这里需要调用旷世平台的API

根据官方给的文档,要向指定 中传入以下键值对

# 从图像中找人脸
def find_face(imgpath):# 打印正确调用此方法语句print('finding')# 按照官网指示,将下面字典内容传入下面网址http_url = 'https://api-cn.faceplusplus.com/facepp/v3/detect'# 传入字典data = {'api_key': 'RXcERmQWM_***********0YLyaSMq',     # api_key键值对'api_secret': 'WlKgVszU__*************AQfkrdfc',  # api_secret键值对'image_url': imgpath,    # 人脸图像本地路径'return_landmark': 1}# 以“读”的形式打开图片files = {'image_file': open(imgpath, 'rb')}# 将字典内容传入上述定义网址得到响应response = requests.post(http_url, data=data, files=files)print(response)# 查看得到的响应内容,以“utf-8”形式解码req_con = response.content.decode('utf-8')print(req_con)# 用simplejson库对json文件解码,方便提取其中的值this_json = simplejson.loads(req_con)# 得到响应内容中脸部数据的值faces = this_json['faces']list0 = faces[0]# 取出五官对应的矩形方框框起来的哪一部分脸部区域rectangle = list0['face_rectangle']print(rectangle)# 返回矩形框选区return rectangle

3 换脸

# 换脸
def merge_face(image_url1, image_url2, image_url, number):  # number换脸相似度# 调用find_face方法# image_url1是基准图,随后提取到的另一张图片的脸部区域要对应贴到此图片的脸上来ff1 = find_face(image_url1)# image_url2是提取脸部特征信息的图ff2 = find_face(image_url2)# 以“读”的形式打开该图像f1 = open(image_url1, 'rb')# 用base64库进行编码f1_64 = base64.b64encode(f1.read())# 读取之后要记得关闭f1.close()# 将两幅图的脸部区域的矩形框框起来的部位位置信息提取出来rectangle1 = str(ff1['top']) + ',' + str(ff1['left']) + ',' + str(ff1['width']) + ',' + str(ff1['height'])rectangle2 = str(ff2['top']) + ',' + str(ff2['left']) + ',' + str(ff2['width']) + ',' + str(ff2['height'])# 与f1类似f2 = open(image_url2, 'rb')f2_64 = base64.b64encode(f2.read())f2.close()# 按照官网指示,将下面字典内容传入下面网址url_add = 'https://api-cn.faceplusplus.com/imagepp/v1/mergeface'data = {'api_key': 'RXcERmQWM_*************0YLyaSMq',       # api_key键值对'api_secret': 'WlKgVszU__*************fkrdfc',    # api_secret键值对'template_base64': f1_64,'template_rectangle': rectangle1,'merge_base64': f2_64,'merge_rectangle': rectangle2,'merge_rate': number      # 换脸相似度}# 传入网址得到响应response1 = requests.post(url_add, data=data)req_con1 = response1.content.decode('utf-8')   # 用‘utf-8’编码print(req_con1)# 将json格式解码req_dict = json.JSONDecoder().decode(req_con1)result = req_dict['result']      # 得到result值imgdata = base64.b64decode(result)file = open(image_url, 'wb')     # 以‘写’的形式打开合成后的图片file.write(imgdata)       # 穿纳入合成后的图片数据值file.close()       # 关闭

4 运行结果

这里我们就看看潘叔适合肖战的哪款发型吧~

4.1 水冰月发型

4.2 大背头

4.3 覃头

4.4 卷毛发型

4.5 马尾头

大家评论区留言潘叔适合哪款发型叭~ 

5 整体代码

import json
import requests
import simplejson
import base64# 从图像中找人脸
def find_face(imgpath):print('finding')http_url = 'https://api-cn.faceplusplus.com/facepp/v3/detect'data = {'api_key': 'RXcERmQWM_**********p0YLyaSMq',   'api_secret': 'WlKgVszU__************AQfkrdfc',  'image_url': imgpath, 'return_landmark': 1}files = {'image_file': open(imgpath, 'rb')}response = requests.post(http_url, data=data, files=files)print(response)req_con = response.content.decode('utf-8')print(req_con)this_json = simplejson.loads(req_con)faces = this_json['faces']list0 = faces[0]rectangle = list0['face_rectangle']print(rectangle)return rectangle# 换脸
def merge_face(image_url1, image_url2, image_url, number):  ff1 = find_face(image_url1)ff2 = find_face(image_url2)f1 = open(image_url1, 'rb')f1_64 = base64.b64encode(f1.read())f1.close()rectangle1 = str(ff1['top']) + ',' + str(ff1['left']) + ',' + str(ff1['width']) + ',' + str(ff1['height'])rectangle2 = str(ff2['top']) + ',' + str(ff2['left']) + ',' + str(ff2['width']) + ',' + str(ff2['height'])f2 = open(image_url2, 'rb')f2_64 = base64.b64encode(f2.read())f2.close()url_add = 'https://api-cn.faceplusplus.com/imagepp/v1/mergeface'data = {'api_key': 'RXcERmQWM_*********5p0YLyaSMq',    'api_secret': 'WlKgVszU__*********XAQfkrdfc',   'template_base64': f1_64,'template_rectangle': rectangle1,'merge_base64': f2_64,'merge_rectangle': rectangle2,'merge_rate': number    }response1 = requests.post(url_add, data=data)req_con1 = response1.content.decode('utf-8')  print(req_con1)req_dict = json.JSONDecoder().decode(req_con1)result = req_dict['result']    imgdata = base64.b64decode(result)file = open(image_url, 'wb')  file.write(imgdata)   file.close()  if __name__ == '__main__':img1 = 'E:/image1.png'img2 = 'E:/image2.png'img = 'E:/image.png'merge_face(img1, img2, img, 100)

「肖战发型适配教程」用python换肖战同款帅气发型俘获少女心就在这了相关推荐

  1. 「C++小游戏教程」猜数游戏

    0. 引言 本章主要讲解如何做一个简易的猜数游戏,分为用户猜数和系统猜数. 前置芝士: 「C++小游戏教程」基本技巧(1)--随机化 1. 用户猜数 系统想好一个在 [1,100][1,100][1, ...

  2. LeetCode 458. Poor Pigs--智力题「小白鼠试毒」--C++,Python解法

    题目地址:Poor Pigs - LeetCode There are 1000 buckets, one and only one of them is poisonous, while the r ...

  3. 「编程面试题库」,大佬开发的一款小程序~

    这是一款好朋友zone7公众号号主开发的小程序--「编程面试题库」.涉及不同语言,不同方向,总有一个适合你!值得体验!(以下为作者的原文) 介绍一下这款小程序 咱们这款小程序记录了当前主流语言的一些常 ...

  4. Linux后台开发系列 之「03.vim 基础教程」

    vim 版权声明:本文为 cdeveloper 原创文章,可以随意转载,但必须在明确位置注明出处! vim 简介 vim 被称为编辑器之神! 在 Linux 下我们经常使用 vim 来写程序,学会使用 ...

  5. 如何在ps添加箭头_「PS精选案例教程」制作斑驳生锈字体

    这个教程会教您如何设计发光斑驳的字体特效,会教您运用PS滤镜和纹理图片,同时也诠释了如何运用笔刷和图层样式给最终的字体效果增添光感. 来,先看看最终效果! 第一步: 创建一个1024*768的新文档. ...

  6. 快加入「我的最爱」吧 Python 开发者不容错过的30 个Github 开源专案(下)

    愈来愈多人使用Python 来进行不同的功能,例如进行机器学习等.如果想透过Python 使用这些功能,可以在GitHub 上找开源专题.以下介绍在GitHub 上大受欢迎的Python 开源专题. ...

  7. rj45带滤波器20/05的数字是什么意思_「手机维修自学教程」认识手机射频电路中的滤波器 维修技巧分析...

    今天跟大家聊聊手机中的滤波器. 昨天放了一个话题给大家交流,射频电路中的滤波器短接问题?有不少朋友也在下面留言了.滤波器何须神圣?有什么作用呢?维修中如何处理呢? 我们先来普及一下滤波器的概念. 滤波 ...

  8. iphone开机白苹果_「手机维修自学教程」苹果6PLUS的DFU模式故障维修技巧思路决定速度...

    今天分享一个苹果6PLUS的DFU模式故障维修. 我们先来认识一下苹果手机的DFU模式. DFU的全称是Device Firmware Upgrade,即iPhone固件的强制升降级模式.实际意思就是 ...

  9. 「C++小游戏教程」基本技巧(1)——随机化

    0. 引言 小游戏中时常要用到随机数,今天就来谈谈这个所谓的"随机". 1. 随机数 rand() 我们要使用随机数(严格意义上是伪随机)的话,C++ 中就有 rand() 来提供 ...

最新文章

  1. 本科计算机专业考北大软微,2022北京大学软微学院计算机智能科技考研必看经验指导(含复试解析)...
  2. 程序计算机限制无法打开,由于一个软件限制策略的阻止,windows无法打开此程序...解决方案参考...
  3. 使用XIB实现嵌套自定义XIB视图
  4. 100阶乘末尾有多少个零
  5. 存储管理实验linux,07-存储管理器实验
  6. 本周ASP.NET英文技术文章推荐[03/18 - 03/24]
  7. [高级操作系统课程] 各大名校 ppt,pdf 课件整理(course materials)
  8. excel提取文字拼音首字母
  9. android 文件下载和保存
  10. 计算机系统概论(原书第2版)部分课后习题答案(第三章)
  11. 均衡发展计算机教室解说词,均衡发展图书室解说词|小学图书室解说词开场白范文推荐...
  12. Task already scheduled or cancelled(用Timer,TimeTask实现定时器功能)
  13. c#实现短信发送程序
  14. 虚拟化:gva、gpa、hva、hpa转化
  15. 联想笔记本无线网络无法使用(无线开关已打开,但搜不到无线网络)
  16. 2019-11-14
  17. 我的电脑开机后桌面上没有图标
  18. c语言T1中断程序编写步骤,用51单片机中断编写的4x4键盘程序
  19. (兼容正点原子引脚)OV7670 FIFO 30W摄像头介绍(二) --- 寄存器图示说明
  20. 目标码格式解析之DSP目标码Cinit段

热门文章

  1. 什么是GMS、CDMA、GPRS、EDGE、WCDMA
  2. 数学简史:数学是一门非常重要的学科,它在各个领域都有着广泛的应用。从古代到现代,数学一直在不断发展和演变,为我们提供了无尽的智慧和启示。
  3. Django2.1遇到 app_label and isn't in an application in INSTALLED_APPS 错误
  4. 自考本科 04741 计算机网络原理 2022年10月真题以及答案(自己做的,仅供参考)
  5. 安利一款功能强大,简单好用的录屏软件!
  6. spring5源码阅读(五)Post Processors类型及作用详解
  7. AXURE教程:散点图
  8. NAXX Demo4_GZQ_02
  9. 【疑难总结】行内块元素文字和图片对齐问题
  10. 用STM32F103使用OLED屏实现贪吃蛇游戏