百度人臉 檢測 識別 python3.5 APIV3版本
第一次寫部落格,我自己就想試試百度的人臉識別,程式碼也沒有優化,簡單的實現了一下供大家參 考。
實現的功能,一個資料夾有6個人的正臉照片,假設是上傳的人臉庫。另一個資料夾有100張圖片,就是抓拍的這6個人的圖片,有的圖片只有一個人,有的圖片有多個人。實現的功能是在圖片中標註出人臉框,上面寫上ID1:0.89,代表百度認為這個臉最像誰並輸出歸一化的相似度分數。
我自己之前試了一下,如果照片裡只有一個人,那就直接把待測照片和人臉庫照片直接交給百度的match識別函式就行,百度直接給你對比分數,效果還很好。如果照片有多張人臉,我就用檢測(detect)介面先進行檢測,把人臉圖擷取儲存,再用截出來人臉圖進行識別。這僅僅是我的想法,不一定正確,僅供參考。
另外,對於只有一個人的圖片,如果你採取截圖再識別(match)的方法,我試著分數會降低,不如直接識別(match)。
百度輸出的分數是0-100,我給化到0-1了。
# -*- coding: utf-8 -*-
"""
Created on Thu Aug 2 17:36:41 2018
@author: 我永遠喜歡青山七海
"""
from aip import AipFace
import base64
import cv2
# 定義常量
APP_ID = 'XXXXXXX'
API_KEY = 'XXXXXXX'
SECRET_KEY = 'XXXXXXX'
client = AipFace(APP_ID, API_KEY, SECRET_KEY)
IMAGE_TYPE='BASE64'
id=[]
id.append(0)#23333333
f1 = open('D:\\ID1.jpg','rb')
id.append(base64.b64encode(f1.read()))
f1.close
f2 = open('D:\\ID2.jpg','rb')
id.append(base64.b64encode(f2.read()))
f2.close
f3 = open('D:\\ID3.jpg','rb')
id.append(base64.b64encode(f3.read()))
f3.close
f4 = open('D:\\ID4.jpg','rb')
id.append(base64.b64encode(f4.read ()))
f4.close
f5 = open('D:\\ID5.jpg','rb')
id.append(base64.b64encode(f5.read()))
f5.close
f6 = open('D:\\ID6.jpg','rb')
id.append(base64.b64encode(f6.read()))
f6.close
def match(img):
score=[]
for i in range(1,7):
params1 = [{"image":str(img,'utf-8'),"image_type":IMAGE_TYPE},{"image":str(id[i],'utf-8'),"image_type":IMAGE_TYPE}]
result = client.match(params1);
#print(result)
if result['error_msg']=='pic not has face':
print('no match ')
return 0
#print('match result')
#print (result)
tmp=result['result']['score']/100.0
score.append(tmp)
#print(result['result']['score'])
#print('match result')
print ([float("%.2f" % max(score)),score.index(max(score))+1])
return[float("%.2f" % max(score)),score.index(max(score))+1]#最高分數和ID
def detect(img64,j):
options = {'max_face_num': 5, }# 影象數量
result1=client.detect(img64, "BASE64", options)
if result1['error_msg']=='pic not has face':
print('no face')
return []
faceNum=result1['result']['face_num']
if faceNum == 0:
return []
img=cv2.imread('D:\\test\\{}.jpg'.format(j))
result=[]
for i in range(faceNum):#儲存小圖
'''if result1['result']['face_list'][i]['face_probability'] >0.3:
location=result1['result']['face_list'][i]['location']
left_top=(int(location['left']),int(location['top']))
right_bottom=(left_top[0]+int(location['width']),left_top[1]+int(location['height']))
result.append([left_top,right_bottom])
#print(left_top[1],right_bottom[1],left_top[0],right_bottom[0])
cropImg=img[max(0,left_top[1]):max(0,right_bottom[1]),max(0,left_top[0]):max(0,right_bottom[0])]
cv2.imwrite('D:\\cropImg\\{}.{}.jpg'.format(j,i),cropImg)'''
location=result1['result']['face_list'][i]['location']
left_top=(int(location['left']),int(location['top']))
right_bottom=(left_top[0]+int(location['width']),left_top[1]+int(location['height']))
result.append([left_top,right_bottom])
#print(left_top[1],right_bottom[1],left_top[0],right_bottom[0])
cropImg=img[max(0,left_top[1]):max(0,right_bottom[1]),max(0,left_top[0]):max(0,right_bottom[0])]
cv2.imwrite('D:\\cropImg\\{}.{}.jpg'.format(j,i),cropImg)
#print('detect result\n')
#print(result)
return result
if __name__ == '__main__':
for j in range(1,101):
print('.........................')
print(j)
f = open('D:\\test\\{}.jpg'.format(j),'rb')
image = base64.b64encode(f.read())
img64 = str(image,'utf-8')
result_detect=detect(img64,j)
print (len(result_detect))
im=cv2.imread('D:\\test\\{}.jpg'.format(j))
if result_detect==0 or result_detect==[]:
cv2.imwrite('D:\\result\\{}.jpg'.format(j),im)
continue
if len(result_detect)==1:
result_match=match(image)
left_top,right_bottom=result_detect[0]
cv2.rectangle(im,left_top,right_bottom,(0,0,255),2)
text = 'ID{}'.format(result_match[1])+':{}'.format(result_match[0])
cv2.putText(im, text, (left_top[0],left_top[1]-6), cv2.FONT_HERSHEY_SIMPLEX,3, (0, 255, 0),5 )
cv2.imwrite('D:\\result\\{}.jpg'.format(j),im)
if len(result_detect)>1:
for i in range(len(result_detect)):
f1 = open('D:\\cropImg\\{}.{}.jpg'.format(j,i),'rb')
image = base64.b64encode(f1.read())
result_match=match(image)
if result_match==0:
cv2.imwrite('D:\\result\\{}.jpg'.format(j),im)
continue
left_top,right_bottom=result_detect[i]
cv2.rectangle(im,left_top,right_bottom,(0,0,255),2)
text = 'ID{}'.format(result_match[1])+':{}'.format(result_match[0])
cv2.putText(im, text, (left_top[0],left_top[1]-6), cv2.FONT_HERSHEY_SIMPLEX,3, (0, 255, 0),5 )
cv2.imwrite('D:\\result\\{}.jpg'.format(j),im)
手裡有國內其他兩家人臉識別的資料,效果來看,百度的人臉檢測率一般,但是絕對夠用,不是頂尖。相對來說通過率太恐怖了,真的是無論低光照還是大角度偏轉,通過率都非常好,但是誤識率我這沒法測。
程式碼寫的很爛見笑了
相關推薦
百度人臉 檢測 識別 python3.5 APIV3版本
第一次寫部落格,我自己就想試試百度的人臉識別,程式碼也沒有優化,簡單的實現了一下供大家參 考。 實現的功能,一個資料夾有6個人的正臉照片,假設是上傳的人臉庫。另一個資料夾有100張圖片,就是抓拍的這6個人的圖片,有的圖片只有一個人,有的圖片有多個人。實現的功能
爬取pexels女性圖片+百度人臉檢測過濾高顏值美女
pexels網站提供了大量貼圖,從中搜索美女圖片,編寫爬蟲進行下載,下載後圖片中除了女人外,還包含男人,風景、靜物和動物,呼叫百度人臉檢測模組識別檢測,將其中顏值大於60分的美女儲存到另外一個資料夾。爬取圖片共計1251張,最後過濾出的美女共計287張。上程式碼:
呼叫百度人臉檢測API實現簡單的顏值檢測
通過百度人工智慧平臺中的人臉檢測模組,實現簡單的人臉檢測,百度人工智慧平臺免費註冊,人臉檢測模組免費使用。相關API文件在:http://ai.baidu.com/docs#/Face-Detect-V3/top,依照API文件就可以寫出一個簡單的檢測工具。程式碼如下
Python3使用百度人臉識別接口識別高顏值妹子圖片
並不是 理解 exp content 平時 百度 CA blank 參考 一、在百度雲平臺創建應用 為什麽要到百度雲平臺創建應用,首先來說是為了獲取獲取access_token時需要的API Key和Secret Key 至於為什麽需要API Key和Secret Key
百度人臉識別AI實踐.doc
compare 技術 開發 描述 ear 註冊 aid con square 0, 前言 百度開放了很多AI能力,其中人臉識別就是其中之一。 本文對百度人臉識別AI進行實踐檢驗,看看其使用效果如何。 鑒於是最為基礎的實踐,基本都是在其接口範例代碼修改而來。 百度人臉
python 與 百度人臉識別api
ace tps get 格式 {} 之前 _id urllib 檢測 用python來做人臉識別代碼量少 思路清晰, 在使用之前我們需要在我們的配置的編譯器中通過pip install baidu-aip 即可 from aip import AipFace
百度人臉識別Java版
作為一個初級碼農,什麼百度雲,阿里雲,騰訊雲都搞一搞,前幾天看到百度的一個AI平臺,挺有意思的,於是乎做了一個人臉識別的小例子。看起來挺牛逼的,做完之後你只會佩服百度的強大! 先展示下專案吧! 通過呼叫攝像頭,實現獲取人臉影象,然後一秒鐘擷取一
基於SSM框架的百度人臉識別
教程地址: http://note.youdao.com/noteshare?id=dd26bdc2e8cd5a5c6ab903cff84652a6&sub=BDFD5CD71A144C35B227AD5C1ADC02AF 下載:人臉庫只錄入了我的,所以請替換成自己的,否則無法識別成
python百度人臉識別判斷人的喜、怒、哀、樂表情
前言 昨天百度給我手機發了條簡訊,內容如下 ![1236](https://upload-images.jianshu.io/upload_images/8491383-e38231e412bdd9a0.png? imageMogr2/auto-orient/strip%7CimageView2
百度人臉識別技術簡單入門
圖片說明: 人臉檢測 小於2M 人臉比對 單次傳入的兩張圖片,小於20M 人臉識別 小於10M 人臉認證 小於10M 人臉庫管理相關介面 小於10M 請求格式支援:PNG、JPG、JPEG、BMP,不支援GIF圖片 需要準備的
trackingjs+websocket+百度人臉識別API,實現人臉簽到
在公司做了個年會的簽到、抽獎系統。用java web做的,用公司的辦公app掃二維碼碼即可簽到,掃完碼就在大螢幕上顯示這個人的照片。之後領導讓我改得高大上一點,用人臉識別來簽到,就把掃二維碼的步驟改成人臉識別。瞭解了相關技術後,大致思路如下:先用websocket與後臺建立通
藉助百度雲中的百度人臉識別用Java開發一個人臉識別
效果可以微信掃一掃檢視 Java呼叫百度的介面。 示例工程也都是呼叫介面的程式碼 不知道為什麼好多人說看不懂 前提是自己會Java。知道JSON HTTP 程式碼報錯看看JDK有沒有替換成自己本地 demo可以看
百度人臉識別模塊使用分享
.org action user rotation sse nco ice -s icon 首先介紹下百度人臉識別模塊(baiduFaceRec): baiduFaceRec模塊封裝了百度AI人臉識別功能,使用此模塊可實現百度人臉檢測(包括age,beauty,expre
Unity中使用百度中文語音識別功能
來源 openapi ner key nbsp 語音識別 ann .text esp 下面是API類 Asr.cs using System; using System.Collections; using System.Collections.Generic;
iOS:百度長語音識別具體的封裝:識別、播放、進度刷新
stat app span nsdata cst 放音 datawit har resp 一、介紹 以前做過訊飛語音識別,比較簡單,識別率很不錯,但是它的識別時間是有限制的,最多60秒。可是有的時候我們需要更長的識別時間,例如朗誦古詩等功能。當然訊飛語音也是可以通過曲線救
百度ocr文字識別接口使用
提交 AC code fun post提交 mage tps image 通過 最近有個需求需要識別圖片中的文字,所以就用到了百度的ocr接口,結果在測試的過程中被圖片格式搞的有點暈,試了好久終於成功了,在此記錄一下。 附ocr接口文檔地址:https://cloud.ba
百度雲--文字識別
獲取 color html get 百度雲 tar ont api title 由於在開發過程中需要使用文字識別,由此學習了一下百度雲相關api。所獲直接就貼出來。 1.獲取文字識別的token 百度雲--文字識別
基於AdaBoost算法——世紀晟結合Haar-like特征訓練人臉檢測識別
st算法 技術分享 測速 循環 family sca 假設 弱分類器 ada AdaBoost?算法是一種快速人臉檢測算法,它將根據弱學習的反饋,適應性地調整假設的錯誤率,使在效率不降低的情況下,檢測正確率得到了很大的提高。 系統在技術上的三個貢獻: 1.用簡單的H
Python——百度AI影象識別API實現動物識別
摘要:百度AI的文件中心是Python2寫的示例程式碼,我的是Python3,之間遇到一些問題,主要是字串的編碼問題,後面有總結。以下是修改之後的Python3 示例程式碼 一、獲取access_token示例程式碼 import urllib.request # client_id
python呼叫百度圖片文字識別介面
# 登入百度api應用頁面獲取下面三相內容 APP_ID = 'xxxxx' API_KEY = 'xxxxxxx' SECRET_KEY = 'xxxxxxx' class BaiduImg(): def __init__(self, img_path): self.im