集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > Python >

成都python在线学习课程:用python合成图片教程!

发布者: 成都达内     浏览次数:     发布时间:2018-12-04 09:28:41

成都python在线学习课程:用python合成图片教程!1. 此程序使用的是 Face++ 的API,所以需要去Face++官网注册账号,2. 创建应用,获取 key 和 secret...

  成都python在线学习课程:用python合成图片教程!

  一. 准备工作

  1. 此程序使用的是 Face++ 的API,所以需要去Face++官网注册账号

  2. 创建应用,获取 key 和 secret

  成都python在线学习课程

  私信小编007即可获取数十套PDF的获取地址,自行进入下载即可!

  3. 下载 simplejson 模块 ,使用pip就可以下载了

  pip install simplejson

  二. 程序思路

  1. 使用 decect 接口,获取人脸关键点

  接口详细文档:

  https://console.faceplusplus.com.cn/documents/4888373

  * return_landmark 参数 不能为 0 不然不会返回人脸关键点

  return_landmark

  Int

  是否检测并返回人脸关键点。合法值为:

  2

  检测。返回 106 个人脸关键点。

  1

  检测。返回 83 个人脸关键点。

  0

  不检测

  注:本参数默认值为 0

  核心代码:

  def find_face(imgpath):

  print("finding") http_url = 'https://api-cn.faceplusplus.com/facepp/v3/detect'

  data = {"api_key": key, "api_secret": secret, "image_url": imgpath, "return_landmark": 1}

  files = {"image_file": open(imgpath, "rb")} req_con = response.content.decode('utf-8')

  response = requests.post(http_url, data=data, files=files) req_dict = JSONDecoder().decode(req_con) faces = this_json2['faces']

  this_json = simplejson.dumps(req_dict) this_json2 = simplejson.loads(this_json) list0 = faces[0] rectangle = list0['face_rectangle'] return rectangle

  # print(rectangle)

  2. 使用 mergeface 接口,合成脸部图像

  接口详细文档:

  https://console.faceplusplus.com.cn/documents/20813963

  * 注意图片文件大小不超过 2 MB

  核心代码:

  # 模板图片地址 合成图片地址 生成图片地址 合成指数0-100

  def add_face(image_url_1,image_url_2,image_url,number):

  ff1 = find_face(image_url_1)

  rectangle1 = str(str(ff1['top']) + "," + str(ff1['left']) + "," + str(ff1['width']) + "," + str(ff1['height']))

  ff2 = find_face(image_url_2)

  rectangle2 = str(ff2['top']) + "," + str(ff2['left']) + "," + str(ff2['width']) + "," + str(ff2['height'])

  # print(rectangle1) # print(rectangle2) url_add = "https://api-cn.faceplusplus.com/imagepp/v1/mergeface"

  f2_64 = base64.b64encode(f2.read())

  f1 = open(image_url_1, 'rb') f1_64 = base64.b64encode(f1.read()) f1.close() f2 = open(image_url_2, 'rb') f2.close()

  "merge_base64": f2_64, "merge_rectangle": rectangle2, "merge_rate": number}

  data = {"api_key": key, "api_secret": secret, "template_base64": f1_64, "template_rectangle": rectangle1, response = requests.post(url_add, data=data) req_con = response.content.decode('utf-8')

  file.close()

  req_dict = JSONDecoder().decode(req_con) print(req_dict) result = req_dict['result'] imgdata = base64.b64decode(result) file = open(image_url, 'wb')

  file.write(imgdata)

  3. 示例运行代码

  # 单独两张照片的合成示例

  image_url_1 = r"C:Users.jpg"

  image_url_2 = r"C:Users.jpg"

  image_url = r'C:Users esult.jpg'

  add_face(image_url_1,image_url_2,image_url,50)

  4. 封装一个多张照片的合成函数

  用 列表List 储存图片地址,先以最开始的两张进行合成,然后将合成后的图片与列表中的其他图像依次合成

  * 程序没有做List的长度验证,注意边界特殊情况

  def add_many(list_face):

  print("正在合成第1-2张")

  image_now = r'C:Users ow.jpg'

  add_face(list_face[0], list_face[1], image_now, 50)

  print("正在合成第"+str(index+1)+"张")

  for index in range(2,len(list_face)):

  add_face(image_now, list_face[index], image_now, 50)

  5. 成果展示

  素材1:

  素材2:

  用python合成图片教程!

  合成结果:

  成都python在线学习课程:用python合成图片教程!

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:绵阳市涪城区临园路东段68号富临大都会7栋3单元9层12号

联系电话:15023458194

公交路线:富乐路口凯德广场(10路;29路;3路;15路;11路;15a路;71路)

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街紫东段35号明宇广场2306

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市人民南路一段86号“城市之心”大厦26楼

联系电话:15023458194

公交路线:成都市人民南路(6路;14路;42路;72路;76路;1010路;)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56