国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

11 OpenCV圖像識別之人臉識別

這篇具有很好參考價值的文章主要介紹了11 OpenCV圖像識別之人臉識別。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


OpenCV 提供了三種人臉識別方法:
  1. Eigenfaces

Eigenfaces是一種基于PCA(Principal Component Analysis,主成分分析)的人臉識別方法,屬于OpenCV中的特征臉方法之一。該方法將人臉圖像轉(zhuǎn)換為低維的特征向量,使用PCA降維的方式提取出訓練集中的主成分特征,進而提取出人臉圖像的特征向量。在進行識別時,通過比較輸入圖像與訓練集中每個圖像的特征向量的相似度來判斷其所屬的人臉類別。

  1. Local Binary Patterns Histograms (LBPH)

LBPH 是一種基于局部二值模式(Local Binary Pattern)的人臉識別方法,它將每個像素與周圍的像素進行比較,計算出每個像素點的二進制編碼,再將編碼串聯(lián)起來形成一個局部特征。LBPH 的優(yōu)點是對于圖像的旋轉(zhuǎn)、縮放和灰度變化等不敏感,但對于遮擋和表情變化等因素的魯棒性還有待提高。

  1. Fisherfaces

Fisherfaces 是一種基于線性判別分析(Linear Discriminant Analysis)的人臉識別方法,它通過將圖像投影到低維空間,將圖像從高維特征向量轉(zhuǎn)換為低維特征向量,并使用低維特征向量進行分類。Fisherfaces 的優(yōu)點是對于光照、表情變化等因素的魯棒性很強,但對于遮擋的魯棒性還有待提高。

1 Eigenfaces

Eigenfaces 是一種基于主成分分析(Principal Component Analysis, PCA)的人臉識別方法,它是最早的、也是最簡單的人臉識別方法之一。

Eigenfaces 方法將每個人臉圖像看作一個高維向量,通過對這些向量進行 PCA 變換,得到一組特征向量(也稱為 eigenfaces),并將每個人臉圖像投影到這組特征向量上,從而將高維的人臉數(shù)據(jù)降維到一個低維的特征空間中,進而實現(xiàn)人臉識別。

1.1 建模流程

首先,通過cv2.face.EigenFaceRecognizer_create()創(chuàng)建Eigenfaces識別器:

EigenFaceRecognizer = cv2.face.EigenFaceRecognizer_create([, num_components[, threshold]])

其中,可選參數(shù)num_components表示PCA保留的特征數(shù)量,默認為0,即保留所有特征??蛇x參數(shù)threshold表示一個閾值,當人臉圖像與訓練數(shù)據(jù)的差異小于該閾值時,認為這是同一個人。默認值為0,表示不使用閾值。

該方法返回一個EigenFaceRecognizer對象,可以使用其train()方法進行訓練,predict()方法進行預測,save()load()方法保存和加載模型。

隨后,進行訓練:

cv2.face.EigenFaceRecognizer_create().train(src, labels)
或
EigenFaceRecognizer.train(src, labels)

其中,

  • src:訓練數(shù)據(jù),可以是一個列表或一個 NumPy 數(shù)組,其中每個元素都是包含人臉圖像的數(shù)組。
  • labels:與訓練數(shù)據(jù)對應的標簽,傳入的一個 NumPy 數(shù)組,其中每個元素都是一個整數(shù)標簽,表示訓練數(shù)據(jù)中對應人臉的身份信息。

該函數(shù)不返回任何值,訓練后的識別器會保存在類實例中,可以通過調(diào)用 cv2.face.EigenFaceRecognizer_create().predict() 函數(shù)使用它。

最后,使用模型進行預測:

label, confidence = recognizer.predict(src)

recognizer.predict(src)函數(shù)是使用已經(jīng)訓練好的人臉識別器對輸入的人臉圖像進行識別。它接收一個參數(shù)src,即待識別的人臉圖像。該函數(shù)返回兩個值:

  • label:表示識別結(jié)果對應的人臉標簽,通常是一個整數(shù)。
  • confidence:表示識別結(jié)果的置信度或準確度。值越小表示置信度越高,一般情況下,評分小于5000就可以認為匹配度高,評分為0則為完全一樣。

1.2 示例代碼

下面提供一個代碼腳本,大概的流程為:

  1. 定義一個空列表 photos 和一個空列表 labels
  2. 使用 OpenCV 中的 cv2.imread() 函數(shù)讀取一組人臉圖像,并將其添加到 photos 列表中。每張圖像都有一個對應的標簽,表示這張圖像屬于哪個人。
  3. 創(chuàng)建一個字典 names,將每個標簽與對應的人名關(guān)聯(lián)起來。
  4. 使用 OpenCV 中的 cv2.face.EigenFaceRecognizer_create() 函數(shù)創(chuàng)建一個特征臉識別器。
  5. 使用 recognizer.train() 函數(shù)訓練識別器,讓其學會如何識別這組人臉圖像。
  6. 讀取一張待識別的人臉圖像,并使用 recognizer.predict() 函數(shù)對其進行識別。該函數(shù)返回一個標簽和一個置信度評分。
  7. 打印出評分和對應的人名。

訓練數(shù)據(jù)網(wǎng)上可以較為容易的找到,也可以博客下面留言獲取。

import cv2  
import numpy as np  
  
photos = list()  
lables = list()  
photos.append(cv2.imread("第一張圖象地址,后面依此類推", 0))  
lables.append(0)  # 第1張圖像對應的標簽  
photos.append(cv2.imread("", 0))  
lables.append(0)  # 第2張圖像對應的標簽  
photos.append(cv2.imread("", 0))  
lables.append(0)  # 第3張圖像對應的標簽  
  
photos.append(cv2.imread("", 0))  
lables.append(1)  # 第4張圖像對應的標簽  
photos.append(cv2.imread("", 0))  
lables.append(1)  # 第5張圖像對應的標簽  
photos.append(cv2.imread("", 0))  
lables.append(1)  # 第6張圖像對應的標簽  
  
names = {"0": "張三", "1": "李四"}  # 標簽對應的名稱字典  
  
recognizer = cv2.face.EigenFaceRecognizer_create()  # 創(chuàng)建特征臉識別器  
recognizer.train(photos, np.array(lables))  # 識別器開始訓練  
  
i = cv2.imread("待識別.png", 0)  # 待識別的人臉圖像  
label, confidence = recognizer.predict(i)  # 識別器開始分析人臉圖像  
print("confidence = " + str(confidence))  # 打印評分  
print(names[str(label)])  # 數(shù)組字典里標簽對應的名字  
cv2.waitKey()  
cv2.destroyAllWindows()

其運行結(jié)果為;
11 OpenCV圖像識別之人臉識別

2 Fisherfaces

Fisherfaces 是一種基于線性判別分析(Linear Discriminant Analysis, LDA)的人臉識別方法,它是 Eigenfaces 方法的改進版本。

Fisherfaces 通過尋找最佳的投影方向(線性變換),將高維的人臉數(shù)據(jù)投影到一個低維的特征空間中,從而實現(xiàn)人臉識別。與 Eigenfaces 不同的是,F(xiàn)isherfaces 不僅僅考慮樣本之間的距離,還考慮了樣本所屬的類別之間的距離,因此更加適用于多類別人臉識別。

Fisherfaces 方法與 Eigenfaces 方法相比,具有更高的識別率和更好的魯棒性,但計算成本較高。

2.1 建模流程

OpenCV的各模型建模流程相同,除

recognizer = cv2.face.EigenFaceRecognizer_create()
# 需要改成
recognizer = cv2.face.FisherFaceRecognizer_create()

其余均不需更改。

2.2 示例代碼

示例代碼與1.2中基本完全相同,需要更改的就是2.1中提到的部分。
更改方法后,運行結(jié)果為:
11 OpenCV圖像識別之人臉識別
此處看出這個模型的confidence較高,也就是對結(jié)果更沒有信心,其原因可能是因為 Fisherfaces 方法對樣本數(shù)據(jù)的數(shù)量和質(zhì)量的要求較高,以及對輸入圖像的光照、姿態(tài)、表情等變化更加敏感。

具體來說,F(xiàn)isherfaces 方法需要在訓練集中包含足夠多的樣本,并且每個樣本需要具有代表性,才能夠獲得較好的分類效果。此外,F(xiàn)isherfaces 方法對于輸入圖像的光照、姿態(tài)、表情等變化比較敏感,這些因素會影響特征向量的提取和分類結(jié)果的準確性,從而降低置信度。

相比之下,Eigenfaces 方法雖然對于樣本數(shù)量和質(zhì)量的要求不高,也比較容易實現(xiàn),但其在人臉識別方面的分類能力和魯棒性較差,因此在某些情況下可能會出現(xiàn)識別錯誤的情況,從而導致置信度較低。

3 Local Binary Histogram

3.1 建模流程

Local Binary Histogram(LBH)是一種基于局部二值模式(Local Binary Pattern, LBP)的人臉識別方法。與前面提到的基于 PCA 或 LDA 的人臉識別方法不同,LBH 方法直接利用局部紋理特征進行人臉識別,具有較好的魯棒性和識別精度。

具體來說,LBH 方法通過以下步驟實現(xiàn)人臉識別:

  1. 對于每個人臉圖像,將其分成若干個局部區(qū)域,并計算每個局部區(qū)域的 LBP 特征。

  2. 將每個局部區(qū)域的 LBP 特征用直方圖統(tǒng)計的方法轉(zhuǎn)換為一個向量。

  3. 將每個人臉圖像的局部區(qū)域 LBP 特征向量組合成一個全局的特征向量,并將其歸一化。

  4. 對于測試集中的每個人臉圖像,同樣將其分成若干個局部區(qū)域,并計算每個局部區(qū)域的 LBP 特征。將每個局部區(qū)域的 LBP 特征向量用直方圖統(tǒng)計的方法轉(zhuǎn)換為一個向量,并將這些向量組合成一個測試集的全局特征向量。

  5. 計算訓練集中每個人臉圖像的全局特征向量與測試集中人臉圖像的全局特征向量之間的距離,將距離最小的訓練集中的人臉圖像所屬的類別作為測試集中人臉圖像的識別結(jié)果。

相比于傳統(tǒng)的基于 PCA 或 LDA 的人臉識別方法,LBH 方法更加魯棒,能夠更好地應對光照、姿態(tài)、表情等變化,同時具有較高的識別率和較低的計算成本,因此被廣泛應用于人臉識別和相關(guān)領(lǐng)域。

3.2 示例代碼

此處需要更改的部分:

recognizer = cv2.face.LBPHFaceRecognizer_create()

此處因計算方法不同,需注意返回值confidence的含義與前兩者不同。
此模型的返回值,小于50認為匹配度較高,0則為完全一樣。

代碼的輸出為:
11 OpenCV圖像識別之人臉識別文章來源地址http://www.zghlxwxcb.cn/news/detail-416875.html

到了這里,關(guān)于11 OpenCV圖像識別之人臉識別的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 競賽選題 基于深度學習的人臉性別年齡識別 - 圖像識別 opencv

    競賽選題 基于深度學習的人臉性別年齡識別 - 圖像識別 opencv

    ?? 優(yōu)質(zhì)競賽項目系列,今天要分享的是 ?? 畢業(yè)設計 人臉性別年齡識別系統(tǒng) - 圖像識別 opencv 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:3分 ?? 更多資料, 項目分享: https

    2024年02月07日
    瀏覽(95)
  • 計算機競賽 圖像識別-人臉識別與疲勞檢測 - python opencv

    計算機競賽 圖像識別-人臉識別與疲勞檢測 - python opencv

    ?? 優(yōu)質(zhì)競賽項目系列,今天要分享的是 ?? 基于圖像識別的人臉識別與疲勞檢測系統(tǒng) 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:5分 ?? 更多資料, 項目分享: https://gitee.co

    2024年02月12日
    瀏覽(25)
  • Python使用Opencv進行圖像人臉、眼睛識別實例演示

    Python使用Opencv進行圖像人臉、眼睛識別實例演示

    效果展示 下面使用 haarcasecade_eye.xml 進行人眼識別的效果圖: 人臉識別是一種可以自動檢測圖像或視頻中存在的人臉的技術(shù)。它可以用于各種應用,例如安全控制,自動標記照片和視頻,以及人臉識別解鎖設備等。在這篇博客中,我們將詳細討論人臉識別技術(shù),以及如何使用

    2023年04月17日
    瀏覽(92)
  • 計算機設計大賽 圖像識別-人臉識別與疲勞檢測 - python opencv

    計算機設計大賽 圖像識別-人臉識別與疲勞檢測 - python opencv

    ?? 優(yōu)質(zhì)競賽項目系列,今天要分享的是 ?? 基于圖像識別的人臉識別與疲勞檢測系統(tǒng) 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:5分 ?? 更多資料, 項目分享: https://gitee.co

    2024年02月20日
    瀏覽(34)
  • python畢設選題 - 圖像識別-人臉識別與疲勞檢測 - python opencv

    python畢設選題 - 圖像識別-人臉識別與疲勞檢測 - python opencv

    ?? 這兩年開始畢業(yè)設計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設題目缺少創(chuàng)新和亮點,往往達不到畢業(yè)答辯的要求,這兩年不斷有學弟學妹告訴學長自己做的項目系統(tǒng)達不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設,學長分享優(yōu)質(zhì)畢業(yè)設計項目,今天

    2024年01月16日
    瀏覽(26)
  • 計算機競賽 基于深度學習的人臉性別年齡識別 - 圖像識別 opencv

    計算機競賽 基于深度學習的人臉性別年齡識別 - 圖像識別 opencv

    ?? 優(yōu)質(zhì)競賽項目系列,今天要分享的是 ?? 畢業(yè)設計 人臉性別年齡識別系統(tǒng) - 圖像識別 opencv 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:3分 ?? 更多資料, 項目分享: https

    2024年02月10日
    瀏覽(96)
  • 基于深度學習的人臉性別年齡識別 - 圖像識別 opencv 計算機競賽

    基于深度學習的人臉性別年齡識別 - 圖像識別 opencv 計算機競賽

    ?? 優(yōu)質(zhì)競賽項目系列,今天要分享的是 ?? 畢業(yè)設計 人臉性別年齡識別系統(tǒng) - 圖像識別 opencv 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:3分 ?? 更多資料, 項目分享: https

    2024年02月06日
    瀏覽(95)
  • 大數(shù)據(jù)畢設分享 圖像識別-人臉識別與疲勞檢測 - python opencv

    大數(shù)據(jù)畢設分享 圖像識別-人臉識別與疲勞檢測 - python opencv

    ?? 這兩年開始畢業(yè)設計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設題目缺少創(chuàng)新和亮點,往往達不到畢業(yè)答辯的要求,這兩年不斷有學弟學妹告訴學長自己做的項目系統(tǒng)達不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設,學長分享優(yōu)質(zhì)畢業(yè)設計項目,今天

    2024年03月12日
    瀏覽(24)
  • Matlab使用BP和LVQ神經(jīng)網(wǎng)絡、圖像處理技術(shù)三種方法實現(xiàn)人臉識別(附上完整仿真源碼+數(shù)據(jù))

    人臉識別是一種常見的生物特征識別技術(shù),廣泛應用于人臉門禁、人臉支付等領(lǐng)域。在人臉識別中,神經(jīng)網(wǎng)絡和圖像處理技術(shù)是兩種常用的方法。本文將介紹如何使用Matlab實現(xiàn)人臉識別,包括BP神經(jīng)網(wǎng)絡、LVQ神經(jīng)網(wǎng)絡和圖像處理技術(shù)。 首先,我們將介紹BP神經(jīng)網(wǎng)絡的人臉識別

    2024年02月13日
    瀏覽(45)
  • Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之四 簡單行人人體檢測效果

    Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之四 簡單行人人體檢測效果

    目錄 Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之四 簡單行人人體檢測效果 一、簡單介紹 二、簡單行人人體檢測效果實現(xiàn)原理 三、簡單行人人體檢測效果案例實現(xiàn)簡單步驟 四、注意事項 Python是一種跨平臺的計算機程序設計語言。是一種面向?qū)?/p>

    2024年04月26日
    瀏覽(102)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包