国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Python編程實現拍照辨顏值

2021-06-24 04:52:32牟曉東
電腦報 2021年3期
關鍵詞:劉德華賦值顏值

牟曉東

Python之所以越來越強大和流行的原因之一,便是其不斷發(fā)展壯大的各種標準庫和第三方擴展庫模塊。在導入庫之后,我們可以直接使用其中已經編寫好的各種函數,有時僅需很少的十幾行甚至是幾行代碼就能實現非常強大的功能。人臉識別是人工智能的重要應用方向,通過本例我們將編寫一段不太復雜的Python程序實現人臉識別的一些功能,包括調用攝像頭進行拍照,數據上傳至百度AI(“人工智能”)接口進行年齡、顏值等的辨識和信息返回輸出。掃碼下載程序源代碼,下面對照代碼我將為您講解代碼中的要點。

1.第三方庫模塊的安裝準備工作

以Anaconda開源Python版本為例,首先進入其PowershellPrompt命令行界面,使用“pip install xxx”命令分別安裝OpenCV計算機視覺庫和requests,注意OpenCV的安裝命令是“pip install opencv-python”(如圖1)。如果安裝不成功,可嘗試更換國內的鏡像源(如清華、阿里云等)。在程序的開始部分使用import命令將三個庫模塊導入:import cv2、import requests、import base64,base64是Python內置的模塊無需安裝。

2.調用攝像頭進行“抓拍”

首先建立變量camera,其值為“cv2.VideoCapture(0)”,即調用OpenCV中的VideoCapture()函數,其中的參數0是指當前計算機的攝像頭編號,該語句完成的功能是將攝像頭拍攝到的畫面保存至變量camera中;接著建立一個“while True:”永遠為真的循環(huán)結構,在循環(huán)體的第一個“ret,img = camera.read()”語句中,前面的ret即“return”邏輯布爾值,為真的話則執(zhí)行后面的“讀取camera中保存的一幀畫面并賦值給變量img”,這樣可以有效過濾掉攝像頭剛剛被調用啟動時無法讀取到數據的“報錯”異常情況;語句“cv2.imshow('Look here:',img)”的作用是開啟一個名為“Look here:”的新窗口,其內容是顯示變量img中所保存的攝像頭畫面;語句“key = cv2.waitKey(10)”的作用是讓程序等待10毫秒,這樣可以有效地獲取攝像頭所拍攝的畫面(因為這是在一個“死循環(huán)”中);然后使用一個if條件判斷:“if key == ord('s'):”,判斷我們是否已經在攝像頭前調整好自己的狀態(tài),是的話則按s鍵(注意一定是將輸入法切換至英文半角狀態(tài)),s即“Save”(保存拍照文件的意思);當程序檢測到s鍵被按下后則執(zhí)行三個語句:

一是“cv2.imwrite('capture.jpg',img)”,作用是將變量img中保存的一幀拍攝畫面內容寫至capture.jpg圖片文件中,注意它的保存位置默認是與本Python程序在同一目錄中;二是執(zhí)行“cv2.destroyAllWindows()”,作用是關閉當前攝像頭的“Look here:”拍攝窗口;三是“break”語句,作用是跳出當前的“while True:”循環(huán)。

運行該段程序,在彈出的攝像頭拍照窗口前稍作調整后按下s鍵,我們就得到了capture.jpg圖片文件(如圖2)。

3.獲取百度AI的AccessToken

在瀏覽器中訪問https://ai.baidu.com/,登錄自己的百度賬號后點擊“控制臺”進入“百度智能云”;接著在左側的項目欄中點擊選擇“人臉識別”,按照提示一步步填寫信息建立自己的一個“人臉識別”應用;然后點擊查看該應用的詳情,將其中的三處關鍵信息的內容分別復制保存至本地(如圖3):

APIKey(簡稱AK):srLfBxDdL1MXDMXDA4b

p5Iv9(此Key無效,需自行申請)

SecretKey(簡稱SK):apW7N6QIyPNvLvk5FW

B53cMXDMXDGbXc(此Key無效,需自行申請)

請求地址:https://aip.baidubce.com/rest/2.0/

face/v3/detect

再次返回至Python編程環(huán)境中,將AK和SK的值分別賦給變量ApiKey和SecretKey,注意其類型為str字符串型,兩側均要添加引號;接著按照百度的提示建立變量host,賦值為“'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_creden

tials&client_id=' + ApiKey + '&client_secret=' + SecretKey”,將AK和SK的值通過字符串連接進行“構造”,目的是獲取百度API的AccessToken“訪問令牌”;然后建立變量response,通過requests中的get方法賦值為“requests.get(host)”;如果有返回值(if response:),則通過語句“print(response.json())”將json數據打印輸出。

單獨運行該段程序,從返回的json數據中找到“'access_token':”,后面的“24.7c1cd7018cec7572

698388888888438a.2592000.1612133454.282335-

17598582” (已做改寫處理)便是我們想要得到的Access Token值(如圖4),其有效訪問期限是一個月。

4.測試本地圖片文件

獲取到Access Token值后,APIKey和SecretKey便暫時退出“舞臺”,刪除本段程序,開始構建本地圖片文件的上傳檢測程序:

建立變量request_url,為其賦值為之前從百度智能云中復制的“請求地址”:“https://aip.baidubce.com/rest/2.0/face/v3/detect”,這便是Python程序與百度間進行數據通信的檢測“入口”;接著建立變量filename,賦值為“Liu.jpg”(搜索下載的劉德華圖片);語句“img = cv2.imread(filename)”的作用是將讀取到的測試圖片文件信息保存至變量img中,然后通過語句“f = open(filename,'rb')”,以只讀二進制的方式打開該文件并存入文件變量f中;建立變量img_test,其值為讀取文件變量f的值并進行Base64編碼:str(base64.b64encode(f.read()),encoding='utf-8');接著建立字典型的參數變量params,其值包括三個“鍵值對”,即:“image”:img_test,“image_type”:“BASE64”,“face_field”:“age,beauty”,最后的“face_field”鍵所對應的值“age,beauty”是可自定義的,在此僅以檢測年齡age和顏值beauty為例,還可以檢測是否戴眼鏡glasses、人種race和熱情度emotion等等。

Base64編碼是網絡上最常見、也是最基本的用于傳輸8bit字節(jié)代碼的二進制編碼方式,用來將非ASCII字符的數據如中文、圖片、視頻等文件轉換成ASCII字符便于安全傳輸的方法,學好它有利于你對應用底層的理解,我們將在以后對這種編碼進行詳細的講解和編寫專門的實例。

根據剛剛獲取的access_token,構建變量request_url,按照百度API幫助文檔所提供的信息為其賦值為“request_url + "?access_token=" + access_token”;然后建立變量headers和response,均按照百度要求進行賦值(可直接從幫助文檔中進行代碼的復制改寫);最后可以先通過“print (response.json())”將百度AI判斷的json數據信息打印輸出(如圖5),發(fā)現該數據包含的信息比較多,但我們最關心的是其中的age和beauty值,需要仔細查看其結構(類似于Python的字典與列表的相互嵌套),最后不難構造出兩個語句:

print('劉德華的年齡是:',response.json()['result']['face_list'][0]['age'])

print('劉德華的顏值打分是:',response.json()['result']['face_list'][0]['beauty'])

這樣,就可以將“print (response.json())”語句前面添加#進行過濾,我們只要最終的結果:“劉德華的年齡是:38,劉德華的顏值打分是:69.95”。

5.將本地圖片更換為攝像頭抓拍圖片進行檢測

現在,將調用攝像頭進行圖像的“抓拍”程序段與測試本地圖片程序段進行組合,注意要將第二段程序中的變量filename賦值為“capture.jpg”(之前值為“Liu.jpg”),最后的print語句提示信息也修改為“我的”。

運行程序,調用攝像頭拍照(擺好POSE后按下s鍵)生成自己的capture.jpg圖片文件后上傳至百度智能云進行分析,最終返回結果:“我的年齡是:41,我的顏值打分是:33.5”。

猜你喜歡
劉德華賦值顏值
關于1 1/2 … 1/n的一類初等對稱函數的2-adic賦值
L-代數上的賦值
誰說C-HR只有高顏值?
車迷(2019年10期)2019-06-24 05:43:24
職人劉德華
劉德華 海闊天空 一路是藍
強賦值幺半群上的加權Mealy機與加權Moore機的關系*
顏值何過之有
除了顏值 你還會發(fā)現的我有趣
Coco薇(2017年3期)2017-04-25 02:53:42
顏值高低只是一時的,保濕抗老是持久戰(zhàn)
利用賦值法解決抽象函數相關問題オ
托克逊县| 盈江县| 丰顺县| 德格县| 通辽市| 北京市| 惠州市| 偏关县| 修文县| 怀来县| 清流县| 星座| 东宁县| 钟祥市| 伽师县| 三门县| 恩平市| 弥渡县| 民乐县| 巴彦县| 彭山县| 罗平县| 抚松县| 罗源县| 荥经县| 横峰县| 安平县| 潼南县| 盐源县| 宜兴市| 罗城| 永城市| 班玛县| 大埔县| 横山县| 固镇县| 泸定县| 商南县| 安康市| 余庆县| 清镇市|