Python调用腾讯API进行人像动漫化
- 1. 作者介绍
- 2. API获取
- 3. 代码调试
- 3.1整体结构
- 3.2 代码解析
- 3.3完整代码
- 3.4效果展示:
- 4. 问题与分析
1. 作者介绍
李犇,男, 西安工程大学电子信息学院,21级硕士研究生
研究方向:智能信息处理
电子邮箱:1135264546@qq.com
孟莉苹,女,西安工程大学电子信息学院,2021级硕士研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:2425613875@qq.com
2. API获取
1.确保电脑正确连接网络。
2.浏览器搜索“腾讯云”,或者输入网址:
https://cloud.tencent.com
3.进行简单的注册、实名认证。
4.新建一个密钥
5.在搜索框搜索人像变换,点击控制台入口下方的人像动漫画,扫码实名认证。
6.实名验证成功之后,就可在此页面查看API的调用情况。
7.搜索相关文档找到想要的API
8.勾选“只看必要参数”,随意选择一个地区,点击“发起调用”,右边框中选择自己熟悉的计算机语言,我选用的是python
3. 代码调试
3.1整体结构
3.2 代码解析
pip 安装腾讯云SDK:
pip install --upgrade tencentcloud-sdk-python
导入必要的包,输入申请好的密钥和密码,读取图片,然后将图片转码。
import json
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.ft.v20200304 import ft_client, models
import base64
SecretId = "自己的SecretId"
SecretKey = "自己的SecretKey"
img_dir = "C:/Users/Ben/Desktop/img/flower.jpg"
with open(img_dir, 'rb') as f:
base64_data = base64.b64encode(f.read())
base64_code = base64_data.decode()
问:图片在发送之前被编码成了啥? 答:一堆神秘的字符串
调用API处理图片, 接收数据,解码显示。
pip 安装腾讯云SDK:
try:
cred = credential.Credential(SecretId, SecretKey)
httpProfile = HttpProfile()
httpProfile.endpoint = "ft.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = ft_client.FtClient(cred, "ap-beijing", clientProfile)
req = models.FaceCartoonPicRequest()
req.Image = base64_code
resp = client.FaceCartoonPic(req)
print(resp)
json_data = resp.to_json_string()
bb = json.loads(json_data)
image = bb["ResultImage"]
with open('C:/Users/Ben/Desktop/img/flower2.jpg', 'wb') as f:
f.write(base64.b64decode(image))
f.close()
问:API调用成功返回给电脑了什么?
答:返回一个字典类型的数据。
3.3完整代码
import json
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.ft.v20200304 import ft_client, models
import base64
SecretId = "自己的SecretId"
SecretKey = "自己的SecretKey"
img_dir = "C:/Users/Ben/Desktop/img/flower.jpg"
with open(img_dir, 'rb') as f:
base64_data = base64.b64encode(f.read())
base64_code = base64_data.decode()
try:
cred = credential.Credential(SecretId, SecretKey)
httpProfile = HttpProfile()
httpProfile.endpoint = "ft.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = ft_client.FtClient(cred, "ap-beijing", clientProfile)
req = models.FaceCartoonPicRequest()
req.Image = base64_code
resp = client.FaceCartoonPic(req)
print(resp)
json_data = resp.to_json_string()
bb = json.loads(json_data)
image = bb["ResultImage"]
with open('C:/Users/Ben/Desktop/img/flower2.jpg', 'wb') as f:
f.write(base64.b64decode(image))
f.close()
except TencentCloudSDKException as err:
print(err)
3.4效果展示:
“浑元形意太极拳掌门人”马保国老师
4. 问题与分析
API返回的参数需要使用 “ .to_json_string() “像数据格式转换为json可读的形式否则如下图:
如果上传的照片没有人脸:
文章出处登录后可见!
已经登录?立即刷新