调用腾讯智能云实现人脸融合

目录

  • 1. 作者介绍
  • 2. 人脸识别内容介绍
    • 2.1 人脸识别简介
    • 2.2 技术原理
  • 3. 实现流程及代码实现
    • 3.1 实现流程
    • 3.2 代码实现
      • 3.2.1 图片为url格式
      • 3.2.2 图片为base64格式
    • 3.3 完整代码
    • 3.4 问题分析

1. 作者介绍

杨煜星,女,西安工程大学电子信息学院,2023级研究生
研究方向:模式识别与人工智能
电子邮件:954154587@qq.com

黄浩磊,男,西安工程大学电子信息学院,2023级研究生,张宏伟人工智能课题组
研究方向:智能视觉检测与工业自动化技术
电子邮件:hhl57303@163.com

2. 人脸识别内容介绍

2.1 人脸识别简介

人脸融合技术是一种创新的图像处理方法,它能够将两个人或多个个体的面部特征合并,生成一张全新的、同时拥有这些个体面部特征的合成照片或视频。这项技术结合了计算机视觉、深度学习、图像处理等领域的前沿成果,不仅在娱乐产业中大放异彩,也在诸多其他领域展现出广泛的应用潜力。

2.2 技术原理

在这里插入图片描述

  1. 人脸检测与关键点定位:
    首先,系统需要识别并定位输入图像中的人脸。这通常通过人脸检测算法实现,它可以找出图像中所有的人脸区域。
    接着,关键点定位技术会精确地标记出每个人脸上的关键特征点,比如眼睛、鼻子、嘴巴的位置,有时还包括眉毛、下巴轮廓等。这些关键点对于后续的对齐和融合至关重要。
  2. 人脸对齐:
    为了使不同人脸的特征能够在空间上对应起来,需要对人脸图像进行对齐操作。这通常涉及到根据关键点的位置,对人脸进行旋转、缩放和平移,使得面部特征在空间上处于一致的位置。
  3. 特征提取:
    在对齐之后,系统会从每张人脸图像中提取特征向量,这些特征向量捕捉了人脸的独特信息,如面部结构、纹理等。这一过程可能涉及深度学习技术,如卷积神经网络(CNN),它们能够高效地从图像中提取高层次特征。
  4. 特征融合:
    这一步骤是人脸融合的核心。根据应用场景的需求,可以采取不同的融合策略。一种常见方法是按一定权重平均或插值两个人脸的特征向量,生成一个新的特征向量,代表融合后的面部特征。
  5. 人脸重建:
    利用生成的融合特征向量,系统通过逆向过程(如生成对抗网络GANs或其他重建算法)生成一个全新的面部图像。这个过程需要确保生成的面部看起来自然且逼真。
  6. 后处理:
    最后,可能需要进行一些后处理步骤,如色彩调整、光影处理等,以增强融合图像的真实感和整体协调性。

3. 实现流程及代码实现

3.1 实现流程

  1. 打开访问管理>>API密钥管理>>新建密钥,获得secret ID ,secret key
    在这里插入图片描述

  2. 腾讯云官网搜索人脸融合产品
    在这里插入图片描述

  3. 点击人脸融合进入操作界面,选择立即选购
    在这里插入图片描述

  4. 在人脸融合左侧选择栏选择活动管理,创建活动
    在这里插入图片描述

  5. 添加素材,注意选取图片要求,不可选用名人、明星照片,否则审核不通过
    在这里插入图片描述
    在这里插入图片描述

  6. 打开人脸融合>>产品文档>>图片人脸融合>>点击调试
    在这里插入图片描述

3.2 代码实现

3.2.1 图片为url格式

在发起点击调试后,选择大区,填相应的活动项目ID和素材ID,这些可以在控制台获取,再将url格式复制粘贴到上图所处位置。
在这里插入图片描述

之后点击发起调用,再点击右侧代码示例>>SDK>>python,复制代码到pycharm,点击运行。
在这里插入图片描述

3.2.2 图片为base64格式

首先要将本地图片转为base64格式,再粘贴到image所处位置,然后点击发起调用,再点击右侧代码示例>>SDK>>python,复制代码到pycharm,点击运行。
在这里插入图片描述

这里左侧为素材图,右侧是要融合的图片,中间是融合后的效果,如下图所示
在这里插入图片描述

3.3 完整代码

  1. url形式的图片,代码融合实现:
import json
import types
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.facefusion.v20220927 import facefusion_client, models
try:
    # 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
    # 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
    # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
    cred = credential.Credential("SecretId", "SecretKey")
    # 实例化一个http选项,可选的,没有特殊需求可以跳过
    httpProfile = HttpProfile()
    httpProfile.endpoint = "facefusion.tencentcloudapi.com"

    # 实例化一个client选项,可选的,没有特殊需求可以跳过
    clientProfile = ClientProfile()
    clientProfile.httpProfile = httpProfile
    # 实例化要请求产品的client对象,clientProfile是可选的
    client = facefusion_client.FacefusionClient(cred, "ap-beijing", clientProfile)

    # 实例化一个请求对象,每个接口都会对应一个request对象
    req = models.FuseFaceRequest()
    params = {
        "ProjectId": "-",
        "ModelId": "-",
        "RspImgType": "url",
        "MergeInfos": [
            {
                "Url": "http://www.talkimages.cn/images/medium/20133087/tkf003_973435.jpg"
            }
        ]
    }
    req.from_json_string(json.dumps(params))

    # 返回的resp是一个FuseFaceResponse的实例,与请求对象对应
    resp = client.FuseFace(req)
    # 输出json格式的字符串回包
    print(resp.to_json_string())

except TencentCloudSDKException as err:
    print(err)
  1. 本地图片融合代码实现方式
    对本地图片进行融合,首先需要将图片转为base64编码格式,以下程序即可转化:

import base64
import os


def image_to_base64(image_path):
    """
    将图片文件转换为Base64编码字符串。
    """
    if not os.path.isfile(image_path):
        raise FileNotFoundError(f"The image file {image_path} does not exist.")

    with open(image_path, 'rb') as image_file:
        encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
    return f"data:image/{os.path.splitext(image_path)[1][1:]};base64,{encoded_string}"


# 图片文件路径
image_path = r'C:\Users\ly\Desktop\人脸\9.jpg'

try:
    # 转换图片为Base64编码
    base64_string = image_to_base64(image_path)
    print("Base64 Encoded Image:")
    print(base64_string)
except FileNotFoundError as e:
    print(e)

运行后会产生一段base编码:在这里插入图片描述
将以上标蓝的复制粘贴到image那里,接着进行运行代码

import json
import types
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.facefusion.v20220927 import facefusion_client, models
try:
    # 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
    # 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
    # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
    cred = credential.Credential("SecretId ", " SecretKey")
    # 实例化一个http选项,可选的,没有特殊需求可以跳过
    httpProfile = HttpProfile()
    httpProfile.endpoint = "facefusion.tencentcloudapi.com"

    # 实例化一个client选项,可选的,没有特殊需求可以跳过
    clientProfile = ClientProfile()
    clientProfile.httpProfile = httpProfile
    # 实例化要请求产品的client对象,clientProfile是可选的
    client = facefusion_client.FacefusionClient(cred, "ap-beijing", clientProfile)

    # 实例化一个请求对象,每个接口都会对应一个request对象
    req = models.FuseFaceRequest()
    params = {
        "ProjectId": "-",
        "ModelId": "-",
        "RspImgType": "url",
        "MergeInfos": [
            {
                "Image":”将产生的base编码复制到这里”
            }
        ]
    }
    req.from_json_string(json.dumps(params))

    # 返回的resp是一个FuseFaceResponse的实例,与请求对象对应
    resp = client.FuseFace(req)
    # 输出json格式的字符串回包
    print(resp.to_json_string())

except TencentCloudSDKException as err:
    print(err)

3.4 问题分析

问题
在这里插入图片描述
解决:将本地图片转换成Base64格式
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/705433.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

周四 A股震荡走低,行情总结

文章正文 周四,A股全日震荡走低,上证指数收跌0.28%,深成指跌近0.创业板指跌0.09%。猪肉、有色金属、中药、磷化工、煤炭、房地产、白酒行业跌幅靠前。科特估概念股掀起20cm涨停潮,半导体、机器人、消费电子、光伏、虚拟电厂概念股…

网络安全等级保护基本要求 第1部分:安全通用要求

基本要求 第三级 安全物理环境 物理位置选择 a) 机房场地应选择在具有防震、防风和防雨等能力的建筑内; b) 机房场地应避免设在建筑物的顶层或地下室,否则应加强防水和防潮措施 物理访问控制 a) 机房出入口应配置电子门禁系统,控制、鉴…

电表抄表软件是什么?

一、电表抄表软件的概念和作用 电表抄表软件,是一种致力于电力企业定制的数字化工具,用以远程控制搜集、管理方法与分析电表数据信息。它取代了传统人工抄表方法,大大提高了工作效率,降低了人为失误,并且能实时监控系…

Ubuntu下使用`sysbench`来测试CPU性能

使用 sysbench 来测试 CPU 性能是一个常见的方法。sysbench 是一个模块化的跨平台基准测试工具,常用于评估系统的各个组件(例如 CPU、内存、I/O 子系统等)的性能。 下面是如何使用 sysbench 来测试 CPU 性能的基本步骤: 1. 安装…

HTML LocalStorage

文章目录 关于HTML本地存储localStorage介绍用法如何获取localStorage中存储的所有值浏览器中查看Local Storage页面输出 关于HTML本地存储 Window.localStorage localStorage介绍 只读的localStorage 属性允许你访问一个Document 源(origin)的对象 S…

vue富文本wangeditor加@人功能(vue2 vue3都可以)

依赖 "wangeditor/editor": "^5.1.23", "wangeditor/editor-for-vue": "^5.1.12", "wangeditor/plugin-mention": "^1.0.0",RichEditor.vue <template><div style"border: 1px solid #ccc; posit…

表 达式树

》》》可以借助 LINQPad工具 using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using System.Transactions;namespace EFDemo {public cla…

深入解析TF-IDF算法:文本分析的基石与力量

在信息爆炸的时代文本数据无处不在&#xff0c;从新闻报道到社交媒体帖子&#xff0c;从学术论文到产品评论&#xff0c;大量的文本信息需要被有效地分析和利用。在这样的背景下TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;算法作为一种简单而有效…

【AI基础】第五步:纯天然保姆喂饭级-安装并运行chatglm3-6b

类似于 【AI基础】第三步&#xff1a;纯天然保姆喂饭级-安装并运行chatglm2-6b&#xff0c;有一些细节不一样。 此系列文章列表&#xff1a; 【AI基础】第一步&#xff1a;安装python开发环境-windows篇_下载安装ai环境python 【AI基础】第一步&#xff1a;安装python开发环境-…

C++:十大排序

目录 时间复杂度分析 选择排序 引言 算法思想 动图展示 代码实现 (升序) 优化 代码实现 分析 冒泡排序 引言 算法思想 动图展示 代码实现 插入排序 引言 算法思想 动图展示 代码实现 计数排序 引言 算法思想 动图展示 代码实现 桶排序 引言 算法思…

OpenCV计算形状之间的相似度ShapeContextDistanceExtractor类的使用

操作系统&#xff1a;ubuntu22.04OpenCV版本&#xff1a;OpenCV4.9IDE:Visual Studio Code编程语言&#xff1a;C11 1.功能描述 ShapeContextDistanceExtractor是OpenCV库中的一个类&#xff0c;主要用于计算形状之间的相似度或距离。它是基于形状上下文&#xff08;Shape Co…

vue页面和 iframe多页面无刷新方案和并行存在解决方案

面临问题 : back的后台以jsp嵌套iframe为主, 所以在前端框架要把iframe无刷新嵌套和vue页面进行并行使用,vue的keep-alive只能对虚拟dom树 vtree 进行缓存无法缓存iframe,所以要对iframe进行处理 tab标签的切换效果具体参考若依框架的tab切换,可以去若依看源码,若依源码没有实…

C语言| 数组

直接定义一个数组&#xff0c;并给所有元素赋值。 数组的下标从0开始&#xff0c;下标又表示数组的长度。 【程序代码】 #include <stdio.h> int main(void) { int a[5] {1, 2, 3, 4, 5}; int i; for(i0; i<5; i) { printf("a[%d] %d\…

EulerOS 安装docker 拉取opengauss 镜像

#下载docker包 wget https://download.docker.com/linux/static/stable/x86_64/docker-18.09.9.tgz #解压 tar zxf docker-18.09.9.tgz #移动解压后的文件夹到/usr/bin mv docker/* /usr/bin #写入docker.service cat >/usr/lib/systemd/system/docker.service <<E…

在不使用js在情况下只用css实现瀑布流效果

使用到的是grid 布局&#xff0c;需要注意的是grid-template-rows: masonry; 目前只有Firefox 浏览器支持这个效果&#xff0c;而且还是一个实验性属性需要在设置里面开发实验性选项才行。 实例 <!DOCTYPE html> <html> <head><title>Document</ti…

如何安装和配置JDK?(详细步骤分享)

1、下载JDK 访问Oracle官方网站&#xff08;Oracle | Cloud Applications and Cloud Platform&#xff09;&#xff0c;选择适合您操作系统的JDK版本进行下载。建议下载最新的稳定版本。 打开Java&#xff0c;往下拉&#xff0c;找到Oracle JDK 打开后&#xff0c;选择右边的J…

抖店被扣保证金,做起来太难导致心态崩了,怎么办?

我是王路飞。 技术、黑科技这些东西&#xff0c;决定不了你做店的结果。 能够决定最终结果的&#xff0c;一定是心态&#xff0c;是乐观还是悲观&#xff1f;是自负还是自卑&#xff1f;是焦躁还是踏实&#xff1f;这很关键。 店铺被扣保证金了&#xff0c;感觉没希望了&…

Vue22-v-model收集表单数据

一、效果图 二、代码 2-1、HTML代码 2-2、vue代码 1、v-model单选框的收集信息 v-model&#xff1a;默认收集的就是元素中的value值。 单选框添加默认值&#xff1a; 2、v-model多选框的收集信息 ①、多个选择的多选 注意&#xff1a; 此处的hobby要是数组&#xff01;&…

视频媒介VS文字媒介

看到一篇蛮有思考意义的文章就摘录下来了&#xff0c;也引起了反思 目录 一、视频的定义 二、”视频媒介“与”文字媒介”作对比 1.形象 VS 抽象 2.被动 VS 主动 三、视频的缺点-【更少】的思考 1.看视频为啥会导致【更少的思考】 2.内容的【浅薄化】 3.内容的【娱乐化…

ctfshow-web入门-命令执行(web43-web52)关于黑洞“ >/dev/null 2>1“的处理与绕过

目录 1、web43 2、web44 3、web45 4、web46 5、web47 6、web48 7、web49 8、web50 9、web51 10、web52 1、web43 在上一题 ‘黑洞’ 的基础上新增过滤&#xff1a; preg_match("/\;|cat/i", $c) 问题不大&#xff0c;我们不用分号和 cat 就行&#xff1a;…