曰本美女∴一区二区特级A级黄色大片, 国产亚洲精品美女久久久久久2025, 页岩实心砖-高密市宏伟建材有限公司, 午夜小视频在线观看欧美日韩手机在线,国产人妻奶水一区二区,国产玉足,妺妺窝人体色WWW网站孕妇,色综合天天综合网中文伊,成人在线麻豆网观看

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenCV人臉監(jiān)測與識(shí)別步驟

新機(jī)器視覺 ? 來源:古月居 ? 2023-05-15 09:18 ? 次閱讀

人臉識(shí)別技術(shù)是基于人的臉部特征,對(duì)輸入的人臉圖像或者視頻流,首先判斷其是否存在人臉,如果存在人臉,則進(jìn)一步的給出每個(gè)臉的位置、大小和各個(gè)主要面部器官的位置信息。

并依據(jù)這些信息,進(jìn)一步提取每個(gè)人臉中所蘊(yùn)涵的身份特征,并將其與已知的人臉進(jìn)行對(duì)比,從而識(shí)別每個(gè)人臉的身份。

1. 人臉識(shí)別步驟

梳理一下人臉識(shí)別實(shí)現(xiàn)的步驟,主要由人臉采集,預(yù)處理,特征提取,匹配與識(shí)別四個(gè)步驟組成

bedca496-f2b5-11ed-90ce-dac502259ad0.png

2. 人臉監(jiān)測

人臉識(shí)別首先應(yīng)該先實(shí)現(xiàn)人臉監(jiān)測,要先在一張圖片中捕獲到人臉,再去識(shí)別圖片中的人臉和數(shù)據(jù)庫中人臉數(shù)據(jù)進(jìn)行比較。

人臉檢測的最常見方法是使用"Haar 分類器"?;?Haar 功能的級(jí)聯(lián)分類器的對(duì)象檢測是 Paul Viola 和 Michael Jones 提出的一種有效的對(duì)象檢測、基于機(jī)器學(xué)習(xí)的方法。

進(jìn)行人臉檢測需要大量的圖像數(shù)據(jù)來訓(xùn)練分類器,然后從中提取特征,使用OpenCV可以進(jìn)行人臉的訓(xùn)練和推理,也可以訓(xùn)練自己的分類器為任何對(duì)象進(jìn)行分類,同時(shí)OpenCV包含許多預(yù)先訓(xùn)練過的分類器,我們只需要調(diào)用OpenCV的接口就可以。

代碼如下:

#導(dǎo)入cv模塊
import cv2 as cv
#檢測函數(shù)
def face_detect():
  gary = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
  face_detect = cv.CascadeClassifier('haarcascade_frontalface_default.xml')
  face = face_detect.detectMultiScale(gary)
  for x,y,w,h in face:
    cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)
  cv.imshow('result',img)


#讀取圖像
img = cv.imread('face2.jpg')
#檢測函數(shù)
face_detect()
#等待
while True:
  if ord('q') == cv.waitKey(0):
    break
#釋放內(nèi)存
cv.destroyAllWindows()

在代碼中,首先對(duì)讀取的圖像進(jìn)行了灰度處理,然后引入級(jí)聯(lián)分類器文件,通過detectMultiScale()函數(shù)來調(diào)用分類器功能

通過rectangle()函數(shù)來標(biāo)記圖像中的面孔,如果發(fā)現(xiàn)人臉,它會(huì)返回檢測到的面部位置,作為左上角(x,y)的矩形,并將”w”作為寬度,將”h”作為高度 。

運(yùn)行效果如下:

bef22e6a-f2b5-11ed-90ce-dac502259ad0.png

3. 錄入人臉功能模塊

導(dǎo)入第三方庫:

import cv2
import os
from PIL import Image
import numpy as np

OS:主要是對(duì)文件和文件夾進(jìn)行操作,在Python中對(duì)?件和?件夾的操作要借助os模塊??的相關(guān)功能。

PIL:python中最常用的圖形處理庫,PIL支持圖像存儲(chǔ)、顯示和處理,它能夠處理幾乎所有圖片格式,可以完成對(duì)圖像的縮放、裁剪、疊加以及圖像添加線條、圖像和文字等操作。

NumPy:一個(gè)由多維數(shù)組對(duì)象和用于處理數(shù)組的例程集合組成的庫??梢詧?zhí)行以下操作:數(shù)組的算數(shù)和邏輯運(yùn)算。傅立葉變換和用于圖形操作的例程。與線性代數(shù)有關(guān)的操作。NumPy 擁有線性代數(shù)和隨機(jī)數(shù)生成的內(nèi)置函數(shù)。

存儲(chǔ)人臉數(shù)據(jù):

facesSamples=[]

存儲(chǔ)姓名數(shù)據(jù):

ids=[]

存儲(chǔ)圖片信息:

imagePaths=[os.path.join(path,f) for f in os.listdir(path)]

加載分類器:

face_detector = cv2.CascadeClassifier('haarcascade_frontalface_alt2.xml'

遍歷列表中的圖片:

for imagePath in imagePaths:

將打開的圖片灰度化:

PIL_img = Image.open(imagePath).convert('L')

將圖片轉(zhuǎn)化為數(shù)組:

img_numpy = np.array(PIL_img,'uint8')

獲取圖片人臉特征:

faces = face_detector.detectMultiScale(img_numpy)

獲取每一張拍攝圖片的id與姓名:

id = int(os.path.split(imagePath)[1].split('.')[0])

做判斷,預(yù)防拍攝無面容圖片:

for x,y,w,h in faces:
   ids.append(id)
   facesSamples.append(img_numpy[y:y+h,x:x+w])

打印面部特征與id,并返回?cái)?shù)據(jù):

 print('id',id)
print('fs:',facesSamples)
return facesSamples,ids

調(diào)用圖片路徑:

path='./data/jm/'

獲取圖像數(shù)組和id標(biāo)簽數(shù)組和姓名:

faces,ids=getImageAndLabels(path)

加載識(shí)別器:

recognizer = cv2.face.LBPHFaceRecognizer_create()

訓(xùn)練數(shù)據(jù):

recognizer.train(faces,np.array(ids))

保存面部特征到文件夾:

recognizer.write('tupian/tupian.yml')

完整代碼如下:

import os
import cv2
from PIL import Image
import numpy as np


def getImageAndLabels(path):
  facesSamples=[]
  ids=[]
  imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
  #檢測人臉
  face_detector = cv2.CascadeClassifier('haarcascade_frontalface_alt2.xml')
  #打印數(shù)組imagePaths
  print('數(shù)據(jù)排列:',imagePaths)
  #遍歷列表中的圖片
  for imagePath in imagePaths:
    #打開圖片,黑白化
    PIL_img=Image.open(imagePath).convert('L')
    #將圖像轉(zhuǎn)換為數(shù)組,以黑白深淺
    # PIL_img = cv2.resize(PIL_img, dsize=(400, 400))
    img_numpy=np.array(PIL_img,'uint8')
    #獲取圖片人臉特征
    faces = face_detector.detectMultiScale(img_numpy)
    #獲取每張圖片的id和姓名
    id = int(os.path.split(imagePath)[1].split('.')[0])
    #預(yù)防無面容照片
    for x,y,w,h in faces:
      ids.append(id)
      facesSamples.append(img_numpy[y:y+h,x:x+w])


    print('id:', id)


  print('fs:', facesSamples)


  return facesSamples,ids


if __name__ == '__main__':
  #圖片路徑
  path='./data/jm/'
  #獲取圖像數(shù)組和id標(biāo)簽數(shù)組和姓名
  faces,ids=getImageAndLabels(path)
  #獲取訓(xùn)練對(duì)象
  recognizer=cv2.face.LBPHFaceRecognizer_create()
  #recognizer.train(faces,names)#np.array(ids)
  recognizer.train(faces,np.array(ids))
  #保存文件
  recognizer.write('trainer/trainer.yml')
  #save_to_file('names.txt',names)

4. 人臉識(shí)別

人臉識(shí)別器已經(jīng)完成,現(xiàn)在要在相機(jī)上捕獲人臉。如果此人之前拍攝并訓(xùn)練過他的臉,識(shí)別器將做出預(yù)測,返回ID名。

使用剛剛訓(xùn)練的識(shí)別器模型(加載trainer.yml),然后就和剛剛“人臉分類器”的步驟一樣去進(jìn)行人臉識(shí)別,并且recognizer.predict將返回每張圖片識(shí)別后的匹配率。

人臉識(shí)別實(shí)現(xiàn)函數(shù)如下:

def face_detect(img):
  gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#轉(zhuǎn)換為灰度
  face_detector=cv2.CascadeClassifier(r'haarcascade_frontalface_alt2.xml')
  face=face_detector.detectMultiScale(gray,1.1,5,cv2.CASCADE_SCALE_IMAGE,(100,100),(300,300))
  #face=face_detector.detectMultiScale(gray)
  for x,y,w,h in face:
    cv2.circle(img,center=(x+w//2,y+h//2),radius=w//2,color=(0,255,0),thickness=1)
    # 人臉識(shí)別
    ids, confidence = recogizer.predict(gray[y:y + h, x:x + w])
    #print('標(biāo)簽id:',ids,'置信評(píng)分:', confidence)
    if confidence > 80:
      cv2.putText(img, 'unkonw', (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 1)
    else:
      cv2.putText(img,str(names[ids-1]), (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 1)
  cv2.imshow('result',img)

添加名字標(biāo)簽:

#名字標(biāo)簽
def name():
  path = './tupian/'
  # names = []
  imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
  for imagePath in imagePaths:
    name = str(os.path.split(imagePath)[1].split('.',2)[1])
    names.append(name)

加載監(jiān)控或已保存下來的視頻:

#加載視頻
cap=cv2.VideoCapture(8)
name()
while True:
  flag,frame=cap.read()
  if not flag:
    break
  face_detect_demo(frame)
  if ord(' ') == cv2.waitKey(10):
    break
#釋放內(nèi)存+視頻
cv2.destroyAllWindows()
cap.release()

最終效果如下

bf1c8b1a-f2b5-11ed-90ce-dac502259ad0.png

bf3ec0b8-f2b5-11ed-90ce-dac502259ad0.jpg

5. 遇到的問題

旭日x3派并沒有opencv-contrib-python庫,需要通過

pip install opencv-contrib-python

進(jìn)行安裝

用OPENCV出現(xiàn)這樣的錯(cuò)誤:

cpp error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

這個(gè)錯(cuò)誤可能是因?yàn)閳D片路徑形式書寫錯(cuò)誤,圖片的格式不對(duì),圖片的數(shù)量不一致,路徑中存在中文導(dǎo)致




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 人臉識(shí)別技術(shù)

    關(guān)注

    0

    文章

    127

    瀏覽量

    14681
  • 傅立葉變換
    +關(guān)注

    關(guān)注

    3

    文章

    105

    瀏覽量

    32732
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    642

    瀏覽量

    42291
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4822

    瀏覽量

    85933
  • PIL
    PIL
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    8759

原文標(biāo)題:OpenCV人臉識(shí)別系統(tǒng)開發(fā)(一):OpenCV人臉監(jiān)測與識(shí)別

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    樹莓派上使用OpenCV和Python實(shí)現(xiàn)實(shí)時(shí)人臉檢測

    本文介紹了如何在樹莓派上,使用 OpenCV 和 Python 完成人臉檢測項(xiàng)目。該項(xiàng)目不僅描述了識(shí)別人臉所需要的具體步驟,同時(shí)還提供了很多擴(kuò)展知識(shí)。此外,該項(xiàng)目并不需要讀者了解詳細(xì)的
    的頭像 發(fā)表于 03-06 09:00 ?5.2w次閱讀

    基于openCV人臉檢測系統(tǒng)的設(shè)計(jì)

    通過對(duì)基于Adaboost人臉檢測算法的研究,利用該算法與計(jì)算機(jī)視覺類庫openCV進(jìn)行人臉檢測系統(tǒng)的設(shè)計(jì),實(shí)現(xiàn)了對(duì)出現(xiàn)在視頻或圖像中的人臉檢測。此外,在VC++6.0環(huán)境下實(shí)現(xiàn)了對(duì)一
    發(fā)表于 12-23 14:19

    【NanoPi2申請(qǐng)】基于opencv人臉識(shí)別門禁系統(tǒng)

    防與監(jiān)控的系統(tǒng),望批準(zhǔn)!謝謝!項(xiàng)目描述:項(xiàng)目簡述:本項(xiàng)目旨在一個(gè)較高性能的嵌入式平臺(tái)上搭建一個(gè)linux系統(tǒng),利用opencv編程實(shí)現(xiàn)人臉識(shí)別。為了實(shí)現(xiàn)圖像采集,需要編寫linux驅(qū)動(dòng)對(duì)攝像頭的數(shù)據(jù)
    發(fā)表于 12-18 14:34

    【LeMaker Guitar申請(qǐng)】基于LeMaker Guitar的人臉識(shí)別系統(tǒng)

    學(xué)習(xí)對(duì)嵌入式應(yīng)用層開發(fā)有一個(gè)更深入的認(rèn)識(shí)。項(xiàng)目描述:基于LeMaker Guitar的人臉識(shí)別系統(tǒng)設(shè)計(jì)思路是把 OpenCV移植到嵌入式操作系統(tǒng)中,然后將人臉
    發(fā)表于 01-18 16:23

    【LeMaker Guitar試用體驗(yàn)】之基于Python下的人臉識(shí)別系統(tǒng)【結(jié)貼】

    本帖最后由 windworld 于 2017-1-22 11:26 編輯 OpenCV 作為開源的計(jì)算機(jī)視覺軟件包,在人臉識(shí)別方便也具有很廣泛的應(yīng)用,在這里我們采用opencv
    發(fā)表于 02-25 14:03

    LabVIE人臉識(shí)別

    labview編寫的工業(yè)級(jí)視覺軟件,自帶人臉識(shí)別功能,只有驗(yàn)證過的技術(shù)人員才有權(quán)限修改參數(shù),是不是顯得軟件的安全性能很高?他山之石可以攻玉,結(jié)合opencv你就可以實(shí)現(xiàn)!廢話不多說直接上圖:以上是檢測效果
    發(fā)表于 05-12 17:29

    【Raspberry Pi 3試用體驗(yàn)】+Opencv+python的人臉識(shí)別

    ;)看一下效果:光線不好還是能認(rèn)出來,說明opencv自帶的分類器算開源里面不錯(cuò)的了~參考:Tigerboard開發(fā)板試用體驗(yàn) python+opencv人臉識(shí)別 NanoPi2試用
    發(fā)表于 05-13 21:38

    【AI技能解析】人臉識(shí)別是怎么做到的?

    識(shí)別支付場景】人臉識(shí)別這么火,那么它到底是怎么實(shí)現(xiàn)的呢?看大牛為您解鎖人臉識(shí)別技術(shù)中的黑科技!中的圖片識(shí)
    發(fā)表于 03-16 11:25

    基于QT+OpenCV人臉識(shí)別-米爾iMX8M Plus開發(fā)板的項(xiàng)目應(yīng)用

    本篇測評(píng)由電子工程世界的優(yōu)秀測評(píng)者“流行科技”提供。此次測試的開源項(xiàng)目,是基于QT+OpenCV人臉識(shí)別打卡項(xiàng)目。本次體驗(yàn)使用的是開源的代碼,此代碼本來是運(yùn)行在WIN下的,為了測試稍微進(jìn)行了修改
    發(fā)表于 05-17 17:43

    【飛凌RK3568開發(fā)板試用體驗(yàn)】使用OpenCV進(jìn)行人臉識(shí)別

    RK3568四核Arm Cortex-A55 處理器的主板,從廠商的宣傳看,其主要市場就是人臉識(shí)別等視頻和圖像應(yīng)用。今天就使用OpenCV自帶的DNN模塊進(jìn)行人臉
    發(fā)表于 01-11 22:06

    人臉識(shí)別

    OpenCV3編程入門》書本配套源代碼:人臉識(shí)別
    發(fā)表于 06-06 15:39 ?13次下載

    OpenCV3編程入門-源碼例程全集-人臉識(shí)別

    OpenCV3編程入門-源碼例程全集-人臉識(shí)別
    發(fā)表于 09-17 22:55 ?2次下載

    基于SeetaFace2和OpenCV實(shí)現(xiàn)人臉識(shí)別

    相信大部分同學(xué)們都已了解或接觸過OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)了,但你一定沒在OpenHarmony上實(shí)現(xiàn)過人臉識(shí)別功能,跟著本文帶你快速在OpenHarmony標(biāo)準(zhǔn)設(shè)備上基于SeetaFace2和
    的頭像 發(fā)表于 08-17 10:50 ?3342次閱讀

    使用DFRobot LattePanda進(jìn)行OpenCV人臉識(shí)別

    電子發(fā)燒友網(wǎng)站提供《使用DFRobot LattePanda進(jìn)行OpenCV人臉識(shí)別.zip》資料免費(fèi)下載
    發(fā)表于 10-28 10:14 ?1次下載
    使用DFRobot LattePanda進(jìn)行<b class='flag-5'>OpenCV</b><b class='flag-5'>人臉</b><b class='flag-5'>識(shí)別</b>

    基于OpenCV人臉識(shí)別系統(tǒng)設(shè)計(jì)

    基于OpenCV人臉識(shí)別系統(tǒng)是一個(gè)復(fù)雜但功能強(qiáng)大的系統(tǒng),廣泛應(yīng)用于安全監(jiān)控、人機(jī)交互、智能家居等多個(gè)領(lǐng)域。下面將詳細(xì)介紹基于OpenCV人臉
    的頭像 發(fā)表于 07-11 15:37 ?2.2w次閱讀