程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python調用騰訊雲API,實現人臉年齡變化

編輯:Python

網上看到了一個教程,調用騰訊雲的人臉識別api和修改年齡api來實現模擬人物不同年齡的面貌

但是大多數教程的代碼都是想同的,估計是抄襲哪個人的關鍵是執行不了

剛好周傑倫馬上要發新專輯了,小改一下,拿傑倫的照,做個實驗咯

開始了

1、首先到騰訊雲上注冊賬號,打開 API 密鑰管理頁面(https://console.cloud.tencent.com/cam/capi)獲取到 SecretId 和 SecretKey,這串值要保存好,後面的腳本需要用上

2、然後創建資源,左上角雲產品入口,依次選擇“人臉識別”和“人臉變換”創建資源,現在的規則是每個賬號有1000個資源可以使用,而且創建資源後並不會馬上可用,所以這一步先做好。

創建完成後,在左側資源目錄下就可以看到當前資源情況

3、 安裝騰訊雲的 SDK,

pip3 install tencentcloud-sdk-python

4、接下來就是腳本,實現人臉變化需要先後調用“人臉識別”和“人臉變換”兩個api,原計劃是打算把兩個腳本合二為一,有空再折騰把。

首先是執行“人臉識別”步驟,獲取面部屬性值,直接上代碼了

import json
import base64
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.iai.v20200303 import iai_client
from tencentcloud.iai.v20200303 import models as models03 sid = "xxxxx"#第一步獲取的SecretId
skey = "xxxxxx"#第一步獲取的SecretKey
try:
filepath = 'test.jpg'#需要變臉的圖片,最好是正面照
file = open(filepath, "rb")
base64_data = base64.b64encode(file.read()) cred = credential.Credential(sid, skey)
httpProfile = HttpProfile()
httpProfile.endpoint = "iai.tencentcloudapi.com" clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = iai_client.IaiClient(cred, "ap-beijing", clientProfile) req = models03.DetectFaceAttributesRequest()
params = {
"MaxFaceNum":2,
"Action":"DetectFace",
"Version":"2018-03-01",
"Image": base64_data.decode()
}
req.from_json_string(json.dumps(params))
resp = client.DetectFaceAttributes(req) faceDetailInfos = resp.FaceDetailInfos
for faceDetailInfo in faceDetailInfos:
faceRect = faceDetailInfo.FaceRect
print(faceRect)
except TencentCloudSDKException as err:
print(err)

執行後,獲取返回信息,記錄返回值裡的x、y等值

5,執行修改年齡的腳本,將上一步獲取的X、Y、Width等值填到腳本對應內容

import json
import base64
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 time sid = "xxxx"#第一步獲取的SecretId
skey = "xxxx"#第一步獲取的SecretKey cred = credential.Credential(sid, skey)
httpProfile = HttpProfile()
httpProfile.endpoint = "ft.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = ft_client.FtClient(cred, "ap-beijing", clientProfile) filepath = 'test.jpg'
file = open(filepath, "rb")
base64_data = base64.b64encode(file.read()) req = models.ChangeAgePicRequest()
for age in range(10, 80):#這裡設置年齡,比如(10,30)意味著生成10歲到79歲的圖片,一共71張
params = {
"Image": base64_data.decode(),
"AgeInfos": [{
"Age": age,
"FaceRect": {
"Y": 120, #注意第一個和第二個X、Y、Width、Height值都需要修改
"X": 198,
"Width": 150,
"Height": 201
}},
{
"Age": age,
"FaceRect": {
"Y": 120,
"X": 198,
"Width": 150,
"Height": 201
}}],
"RspImgType":
"base64"
}
req.from_json_string(json.dumps(params))
resp = client.ChangeAgePic(req)
image_base64 = resp.ResultImage
image_data = base64.b64decode(image_base64)
file_path = '{}.png'.format(age)
with open(file_path, 'wb') as f:
f.write(image_data)
time.sleep(1)

執行腳本,腳本同目錄下就會生成各年齡時期的圖片了,铛铛铛,後面就自由發揮了

注意文件目錄,當然,你會改腳本,可以不這麼存放,我省事

在上一張原圖把,致敬!!!!

Python調用騰訊雲API,實現人臉年齡變化的更多相關文章

  1. python調用騰訊雲短信接口

    目錄 python調用騰訊雲短信接口 賬號注冊 python中封裝騰訊雲短信接口 python調用騰訊雲短信接口 賬號注冊 去騰訊雲官網注冊一個騰訊雲賬號,通過實名認證 然後開通短信服務,創建短信應用 ...

  2. .NET調用騰訊雲API實例

    最近項目有用到騰訊雲的身份識別接口,話不多說,直接上代碼: private void IDCardVerification(HttpContext context) { string imgStr = ...

  3. c#調用騰訊雲API的實例

    //獲取時間戳 .net framework /* DateTime dt = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1 ...

  4. 談談調用騰訊雲【OCR-通用印刷體識別】Api踩的坑

    一.寫在前面 最近做項目需要用到識別圖片中文字的功能,本來用的Tesseract這個寫的,不過效果不是很理想. 隨後上網搜了一下OCR接口,就准備使用騰訊雲.百度的OCR接口試一下效果.不過這個騰訊雲 ...

  5. 騰訊雲API彈性公網IP踩坑

    由於自己管理的雲服務器數量比較多,時不時需要更換IP,在管理台上一下下點擊,實在浪費時間,於是就想到了通過API調用的方式,將更換IP一系列動作,全部集成到Python代碼裡面,實現一行命令,完成IP ...

  6. 借助百度雲API進行人臉識別

    前言:本篇博客是筆者第一次使用百度雲api進行人臉檢測,主要內容包括兩部分,一是獲取接口,二是借助接口進行人臉檢測.筆者也是初步了解這方面的內容,也是參考了雜七雜八的博文,內容可能存在錯誤及其他毛病, ...

  7. C# 調用騰訊雲接口獲取視頻基本信息

    做項目需要上傳視頻,獲取時長,上傳教程很多,獲取信息很少,官方只有一條請求地址. 找了好久,都沒有說這個請求地址怎麼用.最後發現需要調用騰訊雲SDK 官方地址:https://github.com/Q ...

  8. .NET Core HttpClient調用騰訊雲對象存儲Web API的"ERROR_CGI_PARAM_NO_SUCH_OP"問題

    開門見山地說一下問題的原因:調用 web api 時請求頭中多了雙引號,請求體中少了雙引號. 騰訊雲提供的對象存儲(COS)C# SDK 是基於 .NET Framework 用 WebRequest ...

  9. java 調用騰訊雲短信api

    依賴: <!--騰訊短信依賴--> <dependency> <groupId>com.github.qcloudsms</groupId> <a ...

  10. 微信小程序wx.getLocation()獲取經緯度及JavaScript SDK調用騰訊地圖API獲取某一類地址

    簡介 騰訊位置服務為微信小程序提供了基礎的標點能力.線和圓的繪制接口等地圖組件和位置展示.地圖選點等地圖API位置服務能力支持,使得開發者可以自由地實現自己的微信小程序產品. 在此基礎上,騰訊位置服務 ...

隨機推薦

  1. eclipse中提示HttpServletRequest不能引用的解決辦法

    兩種解決方法: 1.右鍵點擊項目->Build Path->Add Libraries..->Server Runtime 選擇Apache Tomcat v8.0 2.右鍵點擊項目 ...

  2. sass進階—變量運算

    /*變量操作 (兩個變量之間的運算符需要用空格隔開,否則會報錯.)==,!= <,>,<=,>=+,-,*,/,% */ $width1:50px;$width2:100px; ...

  3. Mimikatz 法國神器

    0x00 標准模塊 Module : standardFull name : Standard moduleDescription : Basic commands (does not require ...

  4. JSP、EL、JSTL

    JSP(Java Server Pages) 什麼是JSP Java Server Pages(Java服務器端的頁面) 使用JSP:SP = HTML + Java代碼 + JSP自身的東西.執行J ...

  5. 機器學習技法筆記:04 Soft-Margin Support Vector Machine

    Roadmap Motivation and Primal Problem Dual Problem Messages behind Soft-Margin SVM Model Selection S ...

  6. docker unbuntu 32-bit 更新apt-get

    1.vi /etc/apt/sources.list deb http://mirrors.aliyun.com/debian wheezy main contrib non-free deb-src ...

  7. GS 服務器端開啟webservice 遠程調試的方法

    1. 修改 安裝目錄下 web.config的文件. 一般目錄為: C:\Program Files\GenerSoft\bscw_local\web.config 為了保證安全想把文件備份一下. 2 ...

  8. A SQL to insert continuous values

    I need a table to store all the working days. I dont like loop, so I tried sql. The following is the ...

  9. PHP關於VC9和VC6以及Thread Safe和Non Thread Safe版本選擇的問題

    一.如何選擇PHP5.3的VC9版本和VC6版本 VC6版本是使用Visual Studio 6編譯器編譯的,如果你的PHP是用Apache來架設的,那你就選擇VC6版本.      VC9版本是使用 ...

  10. ionic2項目創建回顧 及 react-native 報錯處理

    ionic2: 1.創建項目: ionic start MyIonic2Project tutorial --v2 (下載 tutorial 模板來初始化項目) ionic start MyIonic ...


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved