亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Python編程實現(xiàn)拍照辨顏值

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

        牟曉東

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

        1.第三方庫模塊的安裝準(zhǔn)備工作

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

        2.調(diào)用攝像頭進(jìn)行“抓拍”

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

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

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

        3.獲取百度AI的AccessToken

        在瀏覽器中訪問https://ai.baidu.com/,登錄自己的百度賬號后點擊“控制臺”進(jìn)入“百度智能云”;接著在左側(cè)的項目欄中點擊選擇“人臉識別”,按照提示一步步填寫信息建立自己的一個“人臉識別”應(yīng)用;然后點擊查看該應(yīng)用的詳情,將其中的三處關(guān)鍵信息的內(nèi)容分別復(fù)制保存至本地(如圖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字符串型,兩側(cè)均要添加引號;接著按照百度的提示建立變量host,賦值為“'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_creden

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

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

        698388888888438a.2592000.1612133454.282335-

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

        4.測試本地圖片文件

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

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

        Base64編碼是網(wǎng)絡(luò)上最常見、也是最基本的用于傳輸8bit字節(jié)代碼的二進(jìn)制編碼方式,用來將非ASCII字符的數(shù)據(jù)如中文、圖片、視頻等文件轉(zhuǎn)換成ASCII字符便于安全傳輸?shù)姆椒ǎ瑢W(xué)好它有利于你對應(yīng)用底層的理解,我們將在以后對這種編碼進(jìn)行詳細(xì)的講解和編寫專門的實例。

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

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

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

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

        5.將本地圖片更換為攝像頭抓拍圖片進(jìn)行檢測

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

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

        猜你喜歡
        劉德華賦值顏值
        關(guān)于1 1/2 … 1/n的一類初等對稱函數(shù)的2-adic賦值
        L-代數(shù)上的賦值
        誰說C-HR只有高顏值?
        車迷(2019年10期)2019-06-24 05:43:24
        職人劉德華
        劉德華 海闊天空 一路是藍(lán)
        強賦值幺半群上的加權(quán)Mealy機與加權(quán)Moore機的關(guān)系*
        顏值何過之有
        除了顏值 你還會發(fā)現(xiàn)的我有趣
        Coco薇(2017年3期)2017-04-25 02:53:42
        顏值高低只是一時的,保濕抗老是持久戰(zhàn)
        利用賦值法解決抽象函數(shù)相關(guān)問題オ
        成人性生交大片免费看r| 日本一区二区在线免费视频| 蜜臀av色欲a片无码精品一区| 人妻少妇被猛烈进入中文字幕| 久久国产欧美日韩高清专区| 粗大挺进孕妇人妻在线| 日韩乱码中文字幕在线| 伊人久久大香线蕉综合网站| 国产午夜无码视频免费网站| av在线男人的免费天堂| 水野优香中文字幕av网站| 国产国拍精品av在线观看按摩| 2021年国产精品每日更新| 日本视频一区二区这里只有精品 | 亚洲国产日韩av一区二区| 国产免费观看久久黄av麻豆| 一本色道久久88综合日韩精品| 免费观看国产精品| 日本在线中文字幕一区二区| av剧情演绎福利对白| 国产精品亚洲一区二区三区在线| 亚洲精品一二区| 亚洲av网站在线免费观看| 亚洲爆乳无码精品aaa片蜜桃| 丰满熟妇乱又伦| 777久久| 少妇又骚又多水的视频| 内射欧美老妇wbb| 伊人精品在线观看| 男女啪啪免费视频网址| 天天综合天天爱天天做| 婷婷五月综合丁香在线| 国产大片中文字幕| 亚洲成a人一区二区三区久久| 久久亚洲av成人无码电影a片| 中文字幕 人妻熟女| 99久久国产一区二区三区| 日本一区二区三区高清在线视频 | 国产老熟女狂叫对白| 欧美人与物videos另类| 久久免费看的少妇一级特黄片|