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

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

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

基于OpenCV和 Python的人臉識別實現(xiàn)方案

jmiy_worldofai ? 來源:未知 ? 作者:工程師飛燕 ? 2018-10-21 10:08 ? 次閱讀

下午的時候,配好了OpenCV的Python環(huán)境,OpenCV的Python環(huán)境搭建。于是迫不及待的想體驗一下opencv的人臉識別,如下文。

必備知識

Haar-like

Haar-like百科釋義。通俗的來講,就是作為人臉特征即可。

Haar特征值反映了圖像的灰度變化情況。例如:臉部的一些特征能由矩形特征簡單的描述,如:眼睛要比臉頰顏色要深,鼻梁兩側(cè)比鼻梁顏色要深,嘴巴比周圍顏色要深等。

opencv api

要想使用opencv,就必須先知道其能干什么,怎么做。于是API的重要性便體現(xiàn)出來了。就本例而言,使用到的函數(shù)很少,也就普通的讀取圖片,灰度轉(zhuǎn)換,顯示圖像,簡單的編輯圖像罷了。

如下:

讀取圖片

只需要給出待操作的圖片的路徑即可。

import cv2image = cv2.imread(imagepath)

灰度轉(zhuǎn)換

灰度轉(zhuǎn)換的作用就是:轉(zhuǎn)換成灰度的圖片的計算強度得以降低。

import cv2gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

畫圖

opencv 的強大之處的一個體現(xiàn)就是其可以對圖片進行任意編輯,處理。下面的這個函數(shù)最后一個參數(shù)指定的就是畫筆的大小。

import cv2cv2.rectangle(image,(x,y),(x+w,y+w),(0,255,0),2)

顯示圖像

編輯完的圖像要么直接的被顯示出來,要么就保存到物理的存儲介質(zhì)。

import cv2cv2.imshow("Image Title",image)

獲取人臉識別訓(xùn)練數(shù)據(jù)

看似復(fù)雜,其實就是對于人臉特征的一些描述,這樣opencv在讀取完數(shù)據(jù)后很據(jù)訓(xùn)練中的樣品數(shù)據(jù),就可以感知讀取到的圖片上的特征,進而對圖片進行人臉識別。

import cv2face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_default.xml')

里賣弄的這個xml文件,就是opencv在GitHub上共享出來的具有普適的訓(xùn)練好的數(shù)據(jù)。我們可以直接的拿來使用。

訓(xùn)練數(shù)據(jù)參考地址:

https://github.com/opencv/opencv/tree/master/data/haarcascades

探測人臉

說白了,就是根據(jù)訓(xùn)練的數(shù)據(jù)來對新圖片進行識別的過程。

import cv2

# 探測圖片中的人臉

faces = face_cascade.detectMultiScale( gray, scaleFactor = 1.15, minNeighbors = 5, minSize = (5,5), flags = cv2.cv.CV_HAAR_SCALE_IMAGE)

我們可以隨意的指定里面參數(shù)的值,來達到不同精度下的識別。返回值就是opencv對圖片的探測結(jié)果的體現(xiàn)。

處理人臉探測的結(jié)果

結(jié)束了剛才的人臉探測,我們就可以拿到返回值來做進一步的處理了。但這也不是說會多么的復(fù)雜,無非添加點特征值罷了。

import cv2

print "發(fā)現(xiàn){0}個人臉!".format(len(faces))

for(x,y,w,h) in faces: cv2.rectangle(image,(x,y),(x+w,y+w),(0,255,0),2)

實例

有了剛才的基礎(chǔ),我們就可以完成一個簡單的人臉識別的小例子了。

圖片素材

下面的這張圖片將作為我們的檢測依據(jù)。

人臉檢測代碼

# coding:utf-8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

# __author__ = '郭 璞'

# __date__ = '2016/9/5'

# __Desc__ = 人臉檢測小例子,以圓圈圈出人臉

import cv2

# 待檢測的圖片路徑

imagepath = r'./heat.jpg'

# 獲取訓(xùn)練好的人臉的參數(shù)數(shù)據(jù),這里直接從GitHub上使用默認(rèn)值

face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_default.xml')

# 讀取圖片

image = cv2.imread(imagepath)

gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

# 探測圖片中的人臉

faces = face_cascade.detectMultiScale(

gray,

scaleFactor = 1.15,

minNeighbors = 5,

minSize = (5,5),

flags = cv2.cv.CV_HAAR_SCALE_IMAGE

)

print "發(fā)現(xiàn){0}個人臉!".format(len(faces))

for(x,y,w,h) in faces:

# cv2.rectangle(image,(x,y),(x+w,y+w),(0,255,0),2)

cv2.circle(image,((x+x+w)/2,(y+y+h)/2),w/2,(0,255,0),2)

cv2.imshow("Find Faces!",image)

cv2.waitKey(0)

人臉檢測結(jié)果

輸出圖片:

輸出結(jié)果:

D:SoftwarePython2python.exe E:/Code/Python/DataStructor/opencv/Demo.py發(fā)現(xiàn)3個人臉!

總結(jié)

回顧一下,這次的實驗就是簡單的對opencv的常用的api的使用,重點在于訓(xùn)練數(shù)據(jù)的使用和人臉探測的處理。


下午的時候,配好了OpenCV的Python環(huán)境,OpenCV的Python環(huán)境搭建。于是迫不及待的想體驗一下opencv的人臉識別,如下文。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 人臉識別
    +關(guān)注

    關(guān)注

    76

    文章

    4012

    瀏覽量

    81901
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    635

    瀏覽量

    41349
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84688

原文標(biāo)題:手把手教你如何用 OpenCV + Python 實現(xiàn)人臉識別

文章出處:【微信號:worldofai,微信公眾號:worldofai】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    樹莓派上使用OpenCVPython實現(xiàn)實時人臉檢測

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

    如何用OpenCV的相機捕捉視頻進行人臉檢測--基于米爾NXP i.MX93開發(fā)板

    : breakvideo.release()cv2.destroyAllWindows() 保存后執(zhí)行”python3 opencv_test.py OpenCV裝好后,可以為后面的人臉
    發(fā)表于 11-15 17:58

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

    通過對基于Adaboost人臉檢測算法的研究,利用該算法與計算機視覺類庫openCV進行人臉檢測系統(tǒng)的設(shè)計,實現(xiàn)了對出現(xiàn)在視頻或圖像中的人臉
    發(fā)表于 12-23 14:19

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

    防與監(jiān)控的系統(tǒng),望批準(zhǔn)!謝謝!項目描述:項目簡述:本項目旨在一個較高性能的嵌入式平臺上搭建一個linux系統(tǒng),利用opencv編程實現(xiàn)人臉識別。為了
    發(fā)表于 12-18 14:34

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

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

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

    Python編程語言下實現(xiàn)基于LeMaker Guitar的人臉識別系統(tǒng),具體方案操作如下。一.實驗說明系統(tǒng)設(shè)備:1.LeMakerGuit
    發(fā)表于 02-25 14:03

    【Raspberry Pi 3試用體驗】+Opencv+python的人臉識別

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

    【NanoPC-T4試用申請】基于opencv的人臉識別系統(tǒng)

    項目名稱:基于opencv的人臉識別系統(tǒng)試用計劃:申請理由:這個板子資源很豐富,能上android系統(tǒng)?,F(xiàn)階段opencv是個很火的課題,那這塊板子來試用很是很適用。如果能獲得試用機會
    發(fā)表于 09-12 16:48

    基于MCU的人臉識別解決方案!

    ` 本帖最后由 o_dream 于 2020-8-31 14:36 編輯 基于MCU的機器視覺,可實現(xiàn)具有成本效益的人臉識別 恩智浦基于MCU的機器視覺解決方案利用i.MX RT1
    發(fā)表于 08-31 14:35

    怎樣去實現(xiàn)一種嵌入式linux上的人臉識別程序

    一、前言大概幾年前搞過一套嵌入式linux上的人臉識別程序,當(dāng)然人臉識別的核心算法并不是自己開發(fā)的,關(guān)于人臉
    發(fā)表于 12-23 06:38

    分享一個不錯的基于Android的人臉識別門禁硬件方案

    分享一個不錯的基于Android的人臉識別門禁硬件方案
    發(fā)表于 03-07 07:29

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

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

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

    通過對基于Adaboost人臉檢測算法的研究,利用該算法與計算機視覺類庫openCV進行人臉檢測系統(tǒng)的設(shè)計,實現(xiàn)了對出現(xiàn)在視頻或圖像中的人臉
    發(fā)表于 06-15 10:53 ?477次下載
    基于<b class='flag-5'>openCV</b><b class='flag-5'>的人臉</b>檢測<b class='flag-5'>識別</b>系統(tǒng)的設(shè)計

    基于python代碼的人臉識別實例

    基于python代碼的一個人臉識別的實例,完整的實例,本人在pycharm中實測通過,是一個很基礎(chǔ)的入門級的人臉檢測和識別
    發(fā)表于 07-18 11:11 ?13次下載

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

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