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实现视频人像换脸相关推荐

  1. 基于百度云人脸识别API与opencv的人脸识别系统

    基于百度云人脸识别API与opencv的人脸识别系统 简介 弄这个东西是因为参加了学校的项目,第一次开发做的不是很好. 本系统是基于百度云人脸识别API.opencv级联器.PYQT5进行开发.百度云 ...

  2. python百度云ocr文字识别软件_基于百度云的OCR识别(Python)

    2019年7月3日早上,在百度AI开发者大会上,一个来自山西的青年,将一瓶矿泉水浇在了同样来自山西的李彦宏身上. 可以回顾一下 https://b23.tv/av57665929/p1 ,着实让人一惊 ...

  3. 用Python实现最简单的文字识别:基于百度云文字识别API

    Python版本:3.6.5 百度云提供的文字识别技术,准确率还是非常高的,而且每天还有5w次免费的调用量,对于用来学习或者偶尔拿来用用,已经完全足够了.文章提供一个模板,稍加修改就可以直接套用.注释 ...

  4. 百度云 人脸对比API 使用(nodejs)

    百度提供的web demo测试地址:http://ai.baidu.com/tech/face/compare API : https://aip.baidubce.com/rest/2.0/face ...

  5. 百度云人脸对比 API 调用的报错及改正 汇总

    (我不禁思考,为了数据库课设,在期末月没有复习的前提下,写这个人脸识别打卡,真的值得吗?) 前提是已经注册创建应用,即有AK,SK了,没有的话,搜一下吧,这个教程全的还挺多 问题一 Access To ...

  6. 百度人脸识别技术应用003---百度云离线SDK_Android版_功能分析_获取摄像头视频流中的图片_发给百度人脸识别API_识别搜索_或先同步百度云人脸信息_然后本地人脸识别

    1.基于上一节,我们已经把百度云上的人脸库,建好了,然后我们可以从,百度云官网拿到, 离线人脸识别的SDK. SDK下载_文字识别SDK_语音识别SDK-百度AI开放平台 这里可以点进去下载 2.然后 ...

  7. 基于Python的百度AI人脸识别API接口(可用于OpenCV-Python人脸识别)

    基于Python的百度AI人脸识别API接口(可用于OpenCV-Python人脸识别) 资源: download.csdn.net/download/weixin_53403301/43644312 ...

  8. 基于百度云通过Python实现简单的营业执照识别

    先前在做图像文字识别这个需求的时候发现到百度云提供的SDK有一些有趣的小功能,提供了一些接口能实现身份证.银行卡.驾驶证.行驶证等图像识别,都尝试着玩了一下,发现营业执照的问题比较多,就以此为例简单写 ...

  9. 人脸表情识别 微信小程序 百度智能云人脸识别API(含完整项目文件)

    展示 界面展示 正下方三个按钮: 左边:切换前后置摄像头 中间:拍照 右边:选择相册 识别结果展示 图像中有人脸时显示识别结果: 图像中无人脸时不显示识别结果: 获取百度智能云人脸识别API 1.进入 ...

最新文章

  1. python(19)编码问题
  2. Java:代码验证 StringBuffer 线程安全,StringBuilder 非线程安全
  3. mixin机制 vue_读?VuePress(四)插件机制
  4. 【Android 事件分发】ItemTouchHelper 简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 )
  5. Mac 实现可以在 Finder 下直接打开 iTerm2 并跳转到当前目录
  6. asp.net下载的三种方式
  7. opencvpython图像代码_PythonOpenCV各种图像库的图像读写 增强 方式的简单介绍(附代码)...
  8. OpenCV 访问Mat 像素
  9. 随心所欲玩复制 详解robocopy (完)
  10. indesign增效工具缺失_下载了Indesign CS5,但是文件打不开,说缺少增效工具,如何处理?...
  11. C# 在 Excel 中创建组合图表
  12. 高性能diffpatch算法 -- 如何将微信Apk的官方增量包20.4M缩小到7.0M
  13. X509 PKCS7 PKCS12
  14. 1325:【例7.4】 循环比赛日程表 2020-12-18
  15. android 检查电话号码是否合理(含大陆和香港格式)
  16. c语言提取字符串里面的数字,一个截取字符串中数字的函数
  17. CVE-2021-30461 - VoIPMonitor未授权远程代码执行漏洞
  18. 深圳买房负担全球第一:记得在泡沫破灭前把房子卖掉
  19. 图像的转化(包括灰度,HSV,HSI)
  20. 数据分析: kaggle比赛 - 销量预测

热门文章

  1. C/C++代理商管理系统
  2. uniapp - 微信H5 分享微信朋友圈展示链接,不是缩略图卡片的原因与解决方案
  3. 蓝屏0X000000A0是什么原因
  4. Modbus协议———功能码及格式简述
  5. 不能右键新建html文件,win7右键无新建文件夹 win7图片库无法新建文件夹
  6. IK分词原理深度解析
  7. 2019年CSDN博客排名前15名强(历史上最强15名)
  8. Android渠道SDK接入常见问题
  9. 引用CDN内容的方法总结
  10. android 实现录屏功能(悬浮窗)