基于百度云人脸融合API的python实现视频人像换脸
import os
import cv2
import re
import base64
import requests
AK = 0 #输入你的AK
SK = 0 #输入你的SK
inPath = 0 #输入你分裂视频的图片路劲
aimPath = 0 #输入你想换脸的图像的路劲
outPath = 0 #输入你换完脸图像的保存路径
videoPath = 0 #输入原视频路径
savePath = 0 #输入你想保存结果的路劲和文件名
sum = 1
def resquest(AK,SK):
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+AK+'&client_secret='+SK
response = requests.get(host)
if response:
return response.json()['result']
def splitmv(videoPath, svPath):
cap = cv2.VideoCapture(videoPath)
numFrame = 0
while True:
if cap.grab():
flag, frame = cap.retrieve()
if not flag:
continue
else:
#cv2.imshow('video', frame)
numFrame += 1
newPath = svPath + str(numFrame) + ".jpg"
cv2.imencode('.jpg', frame)[1].tofile(newPath)
if cv2.waitKey(10) == 27:
break
def faceex(inpath,aimpath,outpath):
sum = 1 #换的图像的第一张,建议以顺序命名
while sum < 2140: #最后一张
f1=open(inpath,'rb') #二进制方式打开图文件
ls_f1=base64.b64encode(f1.read()) #读取文件内容,转换为base64编码
f1.close()
str1 = str(ls_f1, encoding="utf-8")
f2=open(aimpath,'rb') #二进制方式打开图文件
ls_f2=base64.b64encode(f2.read()) #读取文件内容,转换为base64编码
f2.close()
str2 = str(ls_f2, encoding="utf-8")
request_url = "https://aip.baidubce.com/rest/2.0/face/v1/merge"
params = "{\"image_template\":{\"image\":\""+str1+"\",\"image_type\":\"BASE64\",\"quality_control\":\"NONE\"},\"image_target\":{\"image\":\""+str2+"\",\"image_type\":\"BASE64\",\"quality_control\":\"NONE\"}}"
access_token = resquest(AK,SK)
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/json'}
response = requests.post(request_url, data=params, headers=headers)
if response:
print (response.json())
re1 = response.json()
print(type(re1))
print(re1['result'])
re = re1['result']['merge_image']
print(re)
image_data = base64.b64decode(re)
with open(outpath, 'wb') as f:
f.write(image_data)
sum = sum+1
print(sum)
def get_images(inpath):
file_list = []
for root, dirs, files in os.walk(inpath):
if not files:
continue
for file in files:
if file.endswith('.jpg'):
file_list.append(os.path.join(root, file))
#file_list.append(file)
return file_list
def key_sort(image_path):
pattern = re.compile("\d+")
image_name = os.path.basename(image_path)
return int(pattern.findall(image_name)[0])
def main():
path = videoPath
file_list = get_images(path)
file_list.sort(key=key_sort)
fps = 30
img_size = (720, 1280)
save_path = savePath
fourcc = cv2.VideoWriter_fourcc('M','J','P','G')
video_writer = cv2.VideoWriter(save_path, fourcc, fps, img_size)
for file_name in file_list:
print(file_name)
img = cv2.imread(file_name)
video_writer.write(img)
video_writer.release()
if __name__ == "__main__":
splitmv(videoPath, inPath) #输入分裂的视频路劲和保存的地址
faceex(inPath,aimPath,outPath)
main()
有问题可以练习QQ1498356982
基于百度云人脸融合API的python实现视频人像换脸相关推荐
- 基于百度云人脸识别API与opencv的人脸识别系统
基于百度云人脸识别API与opencv的人脸识别系统 简介 弄这个东西是因为参加了学校的项目,第一次开发做的不是很好. 本系统是基于百度云人脸识别API.opencv级联器.PYQT5进行开发.百度云 ...
- python百度云ocr文字识别软件_基于百度云的OCR识别(Python)
2019年7月3日早上,在百度AI开发者大会上,一个来自山西的青年,将一瓶矿泉水浇在了同样来自山西的李彦宏身上. 可以回顾一下 https://b23.tv/av57665929/p1 ,着实让人一惊 ...
- 用Python实现最简单的文字识别:基于百度云文字识别API
Python版本:3.6.5 百度云提供的文字识别技术,准确率还是非常高的,而且每天还有5w次免费的调用量,对于用来学习或者偶尔拿来用用,已经完全足够了.文章提供一个模板,稍加修改就可以直接套用.注释 ...
- 百度云 人脸对比API 使用(nodejs)
百度提供的web demo测试地址:http://ai.baidu.com/tech/face/compare API : https://aip.baidubce.com/rest/2.0/face ...
- 百度云人脸对比 API 调用的报错及改正 汇总
(我不禁思考,为了数据库课设,在期末月没有复习的前提下,写这个人脸识别打卡,真的值得吗?) 前提是已经注册创建应用,即有AK,SK了,没有的话,搜一下吧,这个教程全的还挺多 问题一 Access To ...
- 百度人脸识别技术应用003---百度云离线SDK_Android版_功能分析_获取摄像头视频流中的图片_发给百度人脸识别API_识别搜索_或先同步百度云人脸信息_然后本地人脸识别
1.基于上一节,我们已经把百度云上的人脸库,建好了,然后我们可以从,百度云官网拿到, 离线人脸识别的SDK. SDK下载_文字识别SDK_语音识别SDK-百度AI开放平台 这里可以点进去下载 2.然后 ...
- 基于Python的百度AI人脸识别API接口(可用于OpenCV-Python人脸识别)
基于Python的百度AI人脸识别API接口(可用于OpenCV-Python人脸识别) 资源: download.csdn.net/download/weixin_53403301/43644312 ...
- 基于百度云通过Python实现简单的营业执照识别
先前在做图像文字识别这个需求的时候发现到百度云提供的SDK有一些有趣的小功能,提供了一些接口能实现身份证.银行卡.驾驶证.行驶证等图像识别,都尝试着玩了一下,发现营业执照的问题比较多,就以此为例简单写 ...
- 人脸表情识别 微信小程序 百度智能云人脸识别API(含完整项目文件)
展示 界面展示 正下方三个按钮: 左边:切换前后置摄像头 中间:拍照 右边:选择相册 识别结果展示 图像中有人脸时显示识别结果: 图像中无人脸时不显示识别结果: 获取百度智能云人脸识别API 1.进入 ...
最新文章
- python(19)编码问题
- Java:代码验证 StringBuffer 线程安全,StringBuilder 非线程安全
- mixin机制 vue_读?VuePress(四)插件机制
- 【Android 事件分发】ItemTouchHelper 简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 )
- Mac 实现可以在 Finder 下直接打开 iTerm2 并跳转到当前目录
- asp.net下载的三种方式
- opencvpython图像代码_PythonOpenCV各种图像库的图像读写 增强 方式的简单介绍(附代码)...
- OpenCV 访问Mat 像素
- 随心所欲玩复制 详解robocopy (完)
- indesign增效工具缺失_下载了Indesign CS5,但是文件打不开,说缺少增效工具,如何处理?...
- C# 在 Excel 中创建组合图表
- 高性能diffpatch算法 -- 如何将微信Apk的官方增量包20.4M缩小到7.0M
- X509 PKCS7 PKCS12
- 1325:【例7.4】 循环比赛日程表 2020-12-18
- android 检查电话号码是否合理(含大陆和香港格式)
- c语言提取字符串里面的数字,一个截取字符串中数字的函数
- CVE-2021-30461 - VoIPMonitor未授权远程代码执行漏洞
- 深圳买房负担全球第一:记得在泡沫破灭前把房子卖掉
- 图像的转化(包括灰度,HSV,HSI)
- 数据分析: kaggle比赛 - 销量预测