目 錄
- 簡 介
- 1. 人臉對比案例
- 2. 文字圖像識别案例
- 參考文獻
簡 介
當我們不能獨立開發模型或者不能訓練出優秀的神經網絡,我們可通過一些線上平台的API接口調用線上的SDK,進而來處理我們的項目。關于什麼是API和SDK,請點選這裡。常用的提供API接口的線上平台有:百度AI開放平台、face++和騰訊AI等,下面,我們通過一些百度AI的使用案例來具體介紹。
1. 人臉對比案例
- 注冊并登入百度AI,并通過以下步驟點選人臉對比。
- 點選立即使用
- 點選建立應用
- 完善應用資訊,此處資訊随意填寫,隻是輔助了解。接口資訊可不用理會,之後點選立即建立。
- 點選傳回應用清單,即可看到自己所建立過的所有應用。點選檢視人臉庫,即可檢視自己建立的各個使用者組。
- 點選建立組并輸入組ID,之後點選确認。注意,組ID後續在Python中輸入使用,請確定通俗易懂,避免中文。
- 點選使用者組名稱,進入該使用者組即可檢視該使用者組下存儲的所有使用者的人臉資訊(标簽和人臉)。此處我們繼續點選建立使用者。
- 輸入使用者ID并上傳該使用者人臉,點選确認即可得到完整的應用資訊。
- 我們通過兩個人的人臉進行測試。
- 重新傳回應用清單,記下AppID、API Key、Secry Key。點選檢視人臉庫,記下使用者組ID。至此,我們在百度AI上的所有操作均已完成。
- 打開IDE,首先確定Python環境在3.0以上,然後
安裝百度API庫。再建立Python檔案,并鍵入以下代碼:pip install baidu-aip
from aip import AipFace
#from picamera import PiCamera#攝像頭的調用方法。
import urllib.request
#import RPi.GPIO as GPIO
import base64
import time
#百度人臉識别API賬号資訊
APP_ID = '22174723'
API_KEY = 'f2IXqYipCh6GbM0Qup1fctz7'
SECRET_KEY ='*******'
client = AipFace(APP_ID, API_KEY, SECRET_KEY)#建立一個用戶端用以通路百度雲
#圖像編碼方式
IMAGE_TYPE='BASE64'
#camera = PiCamera()#定義一個攝像頭對象
#使用者組
GROUP = '111'
#對圖檔的格式進行轉換
def transimage():
f=open('faceThree2.jpg','rb') #打開人臉照片,此處可以更換成攝像頭,進行實時的人臉捕捉
img= base64.b64encode(f.read())
return img
#上傳到百度api進行人臉檢測
def go_api(image):
result = client.search(str(image, 'utf-8'), IMAGE_TYPE, GROUP);#在百度雲人臉庫中尋找有沒有比對的人臉
if result['error_msg'] == 'SUCCESS':#如果成功了
name = result['result']['user_list'][0]['user_id']#擷取名字
score = result['result']['user_list'][0]['score']#擷取相似度
if score > 80:#如果相似度大于80
print("歡迎%s !" % name)
time.sleep(3)
else:
print("對不起,我不認識你!")
name = 'Unknow'
return 0
curren_time = time.asctime(time.localtime(time.time()))#擷取目前時間
#将人員出入的記錄儲存到Log.txt中
f = open('Log.c','wb')
f.close()
return 1
if result['error_msg'] == 'pic not has face':
print('檢測不到人臉')
time.sleep(2)
return 0
else:
print(result['error_code']+' ' + result['error_code'])
return 0
#主函數
if __name__ == '__main__':
while True:
print('準備')
if True:
#getimage()#拍照
img = transimage()#轉換照片格式
res = go_api(img)#将轉換了格式的圖檔上傳到百度雲
if(res == 1):#是人臉庫中的人
print("開門")#可以拓展成開關門的應用
else:
print("關門")
print('稍等三秒進入下一個')
time.sleep(3)
将百度AI上的AppID、API Key、Secry Key、使用者組ID分别粘貼至程式的對應位置。
打開照片faceThree2.jpg和人臉庫中的人臉對比,判斷是否是人臉庫中的人。
若比對則傳回:
否則傳回:
2. 文字圖像識别案例
和人臉對比相類似,此處我們簡要介紹文字識别。
中間步驟和人臉對比相類似,不過不用建立人臉庫和文字庫。中間幾乎都遵從預設設定,然後擷取AppID、API Key、Secry Key.。
我們需提前将picture檔案夾(其中存放文字圖檔)和建立的空try.py檔案放到一個檔案夾下,export.txt為輸出檔案。
同樣需提前
pip install baidu-aip
安裝 python 的百度AI接口庫。然後在try.py檔案中鍵入以下代碼(并對其中的AppID、API Key、Secry Key做相應的修改):
import glob
from os import path
import os
from aip import AipOcr
from PIL import Image
def convertimg(picfile, outdir):
'''調整圖檔大小,對于過大的圖檔進行壓縮
picfile: 圖檔路徑
outdir: 圖檔輸出路徑
'''
img = Image.open(picfile)
width, height = img.size
while(width*height > 4000000): # 該數值壓縮後的圖檔大約 兩百多k
width = width // 2
height = height // 2
new_img=img.resize((width, height),Image.BILINEAR)
new_img.save(path.join(outdir,os.path.basename(picfile)))
def baiduOCR(picfile, outfile):
"""利用百度api識别文本,并儲存提取的文字
picfile: 圖檔檔案名
outfile: 輸出檔案
"""
filename = path.basename(picfile)
APP_ID = '22123152' # 剛才擷取的 ID,下同
API_KEY = '3ZzZvBFyygtemLcoO6wi5HLR'
SECRECT_KEY = '*******'
client = AipOcr(APP_ID, API_KEY, SECRECT_KEY)
i = open(picfile, 'rb')
img = i.read()
print("正在識别圖檔:\t" + filename)
message = client.basicGeneral(img) # 通用文字識别,每天 50 000 次免費
#message = client.basicAccurate(img) # 通用文字高精度識别,每天 800 次免費
print("識别成功!")
i.close();
with open(outfile, 'a+') as fo:
fo.writelines("+" * 60 + '\n')
fo.writelines("識别圖檔:\t" + filename + "\n" * 2)
fo.writelines("文本内容:\n")
# 輸出文本内容
for text in message.get('words_result'):
fo.writelines(text.get('words') + '\n')
fo.writelines('\n'*2)
print("文本導出成功!")
print()
if __name__ == "__main__":
outfile = 'export.txt'
outdir = 'tmp'
if path.exists(outfile):
os.remove(outfile)
if not path.exists(outdir):
os.mkdir(outdir)
print("壓縮過大的圖檔...")
# // 首先對過大的圖檔進行壓縮,以提高識别速度,将壓縮的圖檔儲存與臨時檔案夾中
for picfile in glob.glob("picture/*"):
convertimg(picfile, outdir)
print("圖檔識别...")
for picfile in glob.glob("tmp/*"):
baiduOCR(picfile, outfile)
os.remove(picfile)
print('圖檔文本提取結束!文本輸出結果位于 %s 檔案中。' % outfile)
os.removedirs(outdir)
輸出如下:
打開export.txt檔案,内容如下:
Python會通過百度AI平台的文字識别,将picture檔案夾下的所有圖檔中的文字提取到export.txt檔案中。
參考文獻
1、百度AI平台接口函數實作人臉識别
2、Python 利用百度文字識别 API 識别并提取圖檔中文字