亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

OpenCV+face++實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別解鎖功能

 更新時(shí)間:2019年08月28日 14:39:40   作者:TA的個(gè)人主頁(yè) >  
這篇文章主要為大家詳細(xì)介紹了OpenCV+face++實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別解鎖功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了OpenCV+face++實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別解鎖功能的具體代碼,供大家參考,具體內(nèi)容如下

1.背景

最近做一個(gè)小東西,需要登錄功能,一開(kāi)始做的就是普通的密碼登錄功能,但是之前看到過(guò)python可以做人臉識(shí)別,所以我就開(kāi)了下腦洞,能不能實(shí)現(xiàn)一個(gè)自己的刷臉解鎖功能。

2.知識(shí)儲(chǔ)備

  • python基礎(chǔ)語(yǔ)法
  • opencv
  • face++文檔
  • requests庫(kù)

3.基本思路

準(zhǔn)備一張你想要被識(shí)別出的人臉照片,后面刷臉就是按照這張照片來(lái)識(shí)別,如果和照片中是同一個(gè)人就解鎖,刷臉就是打開(kāi)攝像頭獲取電腦面前人的人臉,然后與之前那張照片比對(duì)。

4.代碼講解

看下識(shí)別的效果:


第一個(gè)函數(shù)就是打開(kāi)攝像頭并保存圖片:

#從攝像頭讀取圖片并保存
def getpicture():
  cap = cv2.VideoCapture(0)#打開(kāi)攝像頭
  cascade = cv2.CascadeClassifier("E:\OpenCV\sources\data\haarcascades\haarcascade_frontalface_default.xml")#這里是是自己的人臉識(shí)別xml路徑
  while True:
    # get a frame
    ret, frame = cap.read()#捕獲圖片
    # show a frame
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)#轉(zhuǎn)為灰度圖
    rect = cascade.detectMultiScale(gray, scaleFactor=1.15, minNeighbors=5, minSize=(5, 5),flags=cv2.cv.CV_HAAR_SCALE_IMAGE) # 使用模板匹配圖形
    for x, y, z, w in rect:
      cv2.rectangle(frame, (x, y), (x + z, y + w), (0, 0, 255), 2)# 函數(shù)的參數(shù)分別為:圖像,左上角坐標(biāo),右下角坐標(biāo),顏色,寬度
    cv2.imshow("capture", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):#按下q拍照
      cv2.imwrite("images\client.jpg", frame)#相對(duì)路徑,儲(chǔ)存圖片
      break
  cap.release()
  cv2.destroyAllWindows()

第二個(gè)函數(shù)是將樣本圖片與攝像頭讀取的圖片上傳到face++進(jìn)行處理,并拿到它的face_token,該函數(shù)主要用到的就是requests庫(kù)與face++的api。

def upload_img(fileDir, oneface=True):
  url = '%s/detect?api_key=%s&api_secret=%s' % (
    BASE_URL, API_KEY, API_SECRET)
  #注意參數(shù)名與api文檔一致
  files = {'image_file': (os.path.basename(fileDir), open(fileDir, 'rb'),
           mimetypes.guess_type(fileDir)[0]), }
  r = requests.post(url, files=files)
  faces = r.json().get('faces')
  #print faces
  if faces is None:
    print('There is no face found in %s' % fileDir)
  else:
    return faces[0]['face_token']#返回face_token

第三個(gè)函數(shù)是比較兩張圖片的face_token:

def compare(face_token1,face_token2):
  url = '%s/compare' % BASE_URL
  params = BASE_PARAMS
  params['face_token1'] = face_token1
  params['face_token2'] = face_token2
  r = requests.post(url, params)
  #print r.status_code
  #print r.json()
  return r.json().get('confidence')#返回兩張照片的相似度

最后判斷一下compare()函數(shù)的返回值就知道兩張圖片是不是同一個(gè)人了,再程序中加一個(gè)判斷語(yǔ)句就可以實(shí)現(xiàn)基本的解鎖功能了。

完整代碼:

#! usr/bin/env python
#-*- coding:utf-8 -*-

import requests
import os
import mimetypes  #判斷文件類型
import cv2
import time
import win32api
import win32con

BASE_URL = "https://api-cn.faceplusplus.com/facepp/v3"
API_KEY = "g_vhMthXCQEzF0gZG5-o0ICNDhr3-80b"
API_SECRET = "2HD5ysubTeZTwo20JJTudY0cvZN1BPLt"
BASE_PARAMS = {
  'api_key':'g_vhMthXCQEzF0gZG5-o0ICNDhr3-80b',
  'api_secret':'2HD5ysubTeZTwo20JJTudY0cvZN1BPLt'
}
def upload_img(fileDir, oneface=True):
  url = '%s/detect?api_key=%s&api_secret=%s' % (
    BASE_URL, API_KEY, API_SECRET)
  #注意參數(shù)名與api文檔一致
  files = {'image_file': (os.path.basename(fileDir), open(fileDir, 'rb'),
           mimetypes.guess_type(fileDir)[0]), }
  r = requests.post(url, files=files)
  faces = r.json().get('faces')
  #print faces
  if faces is None:
    print('There is no face found in %s' % fileDir)
  else:
    return faces[0]['face_token']



def compare(face_token1,face_token2):
  url = '%s/compare' % BASE_URL
  params = BASE_PARAMS
  params['face_token1'] = face_token1
  params['face_token2'] = face_token2
  r = requests.post(url, params)
  #print r.status_code
  #print r.json()
  return r.json().get('confidence')


def getpicture():
  cap = cv2.VideoCapture(0)
  cascade = cv2.CascadeClassifier("E:\OpenCV\sources\data\haarcascades\haarcascade_frontalface_default.xml")#這里是是自己的人臉識(shí)別xml路徑
  while True:
    # get a frame
    ret, frame = cap.read()
    # show a frame
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    rect = cascade.detectMultiScale(gray, scaleFactor=1.15, minNeighbors=5, minSize=(5, 5),flags=cv2.cv.CV_HAAR_SCALE_IMAGE)
    for x, y, z, w in rect:
      cv2.rectangle(frame, (x, y), (x + z, y + w), (0, 0, 255), 2)
    cv2.imshow("capture", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
      cv2.imwrite("images\client.jpg", frame)#相對(duì)路徑
      break
  cap.release()
  cv2.destroyAllWindows()


getpicture()
print u"                   數(shù)據(jù)讀取中。。。。\n"
face1 = upload_img(u"images\demo4.jpg")
print u"                        正在校對(duì)人臉。。。。。\n"
time.sleep(5)#防止出現(xiàn)qps
print u"                               再等一下。。。。。\n"
face2 = upload_img(u"images\client.jpg")
confidence = compare(face1,face2)
if confidence>=70:
  #print u"同一個(gè)人"
  #win32api.ShellExecute(0,'op','genealogy.exe','','',1)
  win32api.MessageBox(0, u"刷臉成功", u"家譜管理系統(tǒng)", win32con.MB_OK)
  #這里寫你想要繼續(xù)執(zhí)行的代碼
else:
  win32api.MessageBox(0, u"刷臉失敗", u"家譜管理系統(tǒng)", win32con.MB_OK)
  #print u"不是同一個(gè)人"

運(yùn)行效果:

因?yàn)闃颖緢D片是我,所以用白巖松是不能成功的。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python制作可視化GUI界面自動(dòng)分類管理文件

    python制作可視化GUI界面自動(dòng)分類管理文件

    這篇文章主要為大家介紹了python制作可視化GUI界面實(shí)現(xiàn)自動(dòng)分類管理文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python DES加密實(shí)現(xiàn)原理及實(shí)例解析

    Python DES加密實(shí)現(xiàn)原理及實(shí)例解析

    這篇文章主要介紹了Python DES加密實(shí)現(xiàn)原理及實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • MxNet預(yù)訓(xùn)練模型到Pytorch模型的轉(zhuǎn)換方式

    MxNet預(yù)訓(xùn)練模型到Pytorch模型的轉(zhuǎn)換方式

    這篇文章主要介紹了MxNet預(yù)訓(xùn)練模型到Pytorch模型的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • 一文詳解Python中復(fù)合語(yǔ)句的用法

    一文詳解Python中復(fù)合語(yǔ)句的用法

    復(fù)合語(yǔ)句是包含其它語(yǔ)句(語(yǔ)句組)的語(yǔ)句;它們會(huì)以某種方式影響或控制所包含其它語(yǔ)句的執(zhí)行。通常,復(fù)合語(yǔ)句會(huì)跨越多行,雖然在某些簡(jiǎn)單形式下整個(gè)復(fù)合語(yǔ)句也可能包含于一行之內(nèi)。本文就來(lái)講講Python中復(fù)合語(yǔ)句的使用
    2022-07-07
  • Python3基于plotly模塊保存圖片表格

    Python3基于plotly模塊保存圖片表格

    這篇文章主要介紹了Python3基于plotly模塊保存圖片表格,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • PyCharm搭建一勞永逸的開(kāi)發(fā)環(huán)境

    PyCharm搭建一勞永逸的開(kāi)發(fā)環(huán)境

    這篇文章主要介紹了PyCharm搭建一勞永逸的開(kāi)發(fā)環(huán)境,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • python通過(guò)微信發(fā)送郵件實(shí)現(xiàn)電腦關(guān)機(jī)

    python通過(guò)微信發(fā)送郵件實(shí)現(xiàn)電腦關(guān)機(jī)

    這篇文章主要為大家詳細(xì)介紹了python通過(guò)微信發(fā)送郵件實(shí)現(xiàn)電腦關(guān)機(jī),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 利用python實(shí)現(xiàn)凱撒密碼加解密功能

    利用python實(shí)現(xiàn)凱撒密碼加解密功能

    這篇文章主要介紹了利用python實(shí)現(xiàn)凱撒密碼加解密功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • ?python中的元類metaclass詳情

    ?python中的元類metaclass詳情

    這篇文章主要介紹了python中的metaclass詳情,在python中的metaclass就是幫助developer實(shí)現(xiàn)元編程,更多詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-05-05
  • Python使用collections模塊實(shí)現(xiàn)擴(kuò)展數(shù)據(jù)類

    Python使用collections模塊實(shí)現(xiàn)擴(kuò)展數(shù)據(jù)類

    Python?標(biāo)準(zhǔn)庫(kù)提供了一個(gè)?collections?模塊,里面提供了很多的數(shù)據(jù)類,在工作中使用這些類能夠簡(jiǎn)化我們的開(kāi)發(fā),本文就來(lái)看看collections是如何實(shí)現(xiàn)擴(kuò)展數(shù)據(jù)類的吧
    2023-06-06

最新評(píng)論