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

OpenCV人臉識別,訓練模型為cv2.face.LBPHFaceRecognizer_create()

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

OpenCV內部自帶有三種人臉檢測方式:LBPH人臉識和其他兩種方法(Eigen人臉識別,FisherFace人臉識別)本次主要說明第一種方式LBPH檢測。

1.素材創(chuàng)建

1.創(chuàng)建需要訓練的圖片的集文件夾,和識別功能測試圖片集的文件夾。OpenCV人臉識別,訓練模型為cv2.face.LBPHFaceRecognizer_create()

圖(1)訓練圖集文件夾?OpenCV人臉識別,訓練模型為cv2.face.LBPHFaceRecognizer_create()

?圖(1.1)taylorswift照片(盡量選用背景沒其他人和尺寸小的照片,不然不好打開,也可以用resize函數進行縮?。?/p>

OpenCV人臉識別,訓練模型為cv2.face.LBPHFaceRecognizer_create()

?圖(2)識別文件夾,一樣放入需要識別的照片

2.識別過程

1.使用Haar-cascade進行訓練,針對與Haar-cascade的識別原理,大家可以自行Google查詢,主要說明如何使用Haar-cascade進行訓練。首先創(chuàng)建haar_cascade實例,

haar_cascade = cv2.CascadeClassifier('haar_face.xml')  # .xml文件可從opencv官網下載

2.導入文件內容(目標圖片和對應標簽)

def create_train():
    # loop every folder
    for person in people:
        path = os.path.join(DIR, person)
        label = people.index(person)
        # loop every image in the folder

        for img in os.listdir(path):
            img_path = os.path.join(path, img)
            # read the image from the path

            img_array = cv2.imread(img_path)
            gary = cv2.cvtColor(img_array, cv2.COLOR_BGR2GRAY)

            faces_rect = haar_cascade.detectMultiScale(gary, scaleFactor=1.1, minNeighbors=7)
            for (x, y, w, h) in faces_rect:
                faces_roi = gary[y:y + h, x:x + w]
                features.append(faces_roi)
                labels.append(label)

文件路徑名根據自己創(chuàng)建的文件所在路徑更改

3.用函數cv2.face.LBPHFaceRecognizer_ create ( ) 生成LBPH識別器實例模型

首先創(chuàng)建訓練實例對象

cv2.face.LBPHFaceRecognizer_ create ( radius,neighbors,grid_ x,grid_ y, threshold)四個參數均可選,通常默認不設置

face_recognizer = cv2.face.LBPHFaceRecognizer_create()

4.訓練模型

face_recognizer.train(features,labels)

通常傳入兩個參數scr和label

scr:訓練圖像,用來識別的人臉圖像

label:人臉圖像對于的標簽,名字

5.通常需要將訓練好的模型進行保存

face_recognizer.save('face_trained.yml')

6.函數face_recognizer.predict( ) 對一個待測人臉圖像進行判斷,尋找與當前圖像距離最近的人臉圖像。與哪個人臉圖像最近,就將當前待測圖像標注為其對應的標簽。該函數有兩個返回值,label和confidence。

label:返回的識別結果標簽。

confidence:置信度,衡量識別結果與原有模型之間的距離。在LBPH識別方式中,0表示完全匹配。通常情況下,認為小于50的值是可以接受的,如果該值大于85則認為差別較大。

以下為代碼,分為訓練代碼和識別代碼兩個部分

訓練代碼

# face_train.py
# by liangyu 2020.7.19
# use opencv's built in face recognizer
import os
import cv2
import numpy as np

people = ['Avril Lavigne', 'Chris Martin', 'Emma Watson', 'Taylor Swift']
# p = []
# for i in os.listdir(r'E:\opencv_source'):
#     p.append(i)
# print(p)
DIR = r'E:\opencv_source'

haar_cascade = cv2.CascadeClassifier('haar_face.xml')  # .xml文件可從opencv官網下載

features = []
labels = []


def create_train():
    # loop every folder
    for person in people:
        path = os.path.join(DIR, person)
        label = people.index(person)
        # loop every image in the folder

        for img in os.listdir(path):
            img_path = os.path.join(path, img)
            # read the image from the path

            img_array = cv2.imread(img_path)
            gary = cv2.cvtColor(img_array, cv2.COLOR_BGR2GRAY)

            faces_rect = haar_cascade.detectMultiScale(gary, scaleFactor=1.1, minNeighbors=7)
            for (x, y, w, h) in faces_rect:
                faces_roi = gary[y:y + h, x:x + w]
                features.append(faces_roi)
                labels.append(label)


create_train()
# print(f'Length of the features = {len(features)}')
# print(f'Length of the features = {len(labels)}')
print('Training Done ------------------')

features = np.array(features,dtype='object')
labels = np.array(labels)

face_recognizer = cv2.face.LBPHFaceRecognizer_create()

# Train the Recognizer on the features list and the labels list
face_recognizer.train(features,labels)
# Pass two parameters: 1.scr--->the target image 2.label---->the corresponding label of the image
face_recognizer.save('face_trained.yml')
np.save('features.npy',features)
np.save('labels.npy',labels)

識別代碼

# faces_recognition.py
import numpy as np
import cv2

haar_cascade = cv2.CascadeClassifier('haar_face.xml')

people = ['Avril Lavigne', 'Chris Martin', 'Emma Watson', 'Taylor Swift']
features = np.load('features.npy', allow_pickle=True)
labels = np.load('labels.npy', allow_pickle=True)

face_recognizer = cv2.face.LBPHFaceRecognizer_create()
face_recognizer.read('face_trained.yml')
img = cv2.imread(r'E:\image\verify\Chris Martin\cm3.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('Person', gray)

# Detect the face in the image
face_rect = haar_cascade.detectMultiScale(gray, 1.1, 4)
for (x, y, w, h) in face_rect:
    face_roi = gray[y:y + h, x:x + w]

    label, confidence = face_recognizer.predict(face_roi)
    # Return two values: label and confidence
    print(f'label = {people[label]} with a confidence of {confidence}')
    # confidence :'0' indicates an exact match,value less than 50 is considered acceptable
    # value greater than 85 means the difference is huge
    cv2.putText(img, str(people[label]), (10, 30), cv2.FONT_HERSHEY_COMPLEX, 0.8, (0, 255, 0), thickness=1)
    cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), thickness=2)
cv2.imshow('Detected Face', img)
cv2.waitKey(0)

3.識別結果展示

OpenCV人臉識別,訓練模型為cv2.face.LBPHFaceRecognizer_create()

?對Coldplay主唱 Chris Martin進行識別可以看到與其相匹配且置信度為0表示完全匹配。

OpenCV人臉識別,訓練模型為cv2.face.LBPHFaceRecognizer_create()

對霉霉進行識別,結果識別出來為艾瑪沃特森??!置信度72表示和實際有較大的誤差

4.結束語:

對于opencv內部自帶的人臉檢測(LBPH人臉識別)和其他兩種方法(Eigen人臉識別,FisherFace人臉識別)方法大致相同,通常情況下這三種方法識別精度較低,且對噪聲較為敏感,識別效果并不是十分精準,和預期還是有一定出入的。其他兩種識別方法可參考這篇文章https://blog.csdn.net/weixin_43810267/article/details/106650055

Haar特征分類器介紹可以參考?(55條消息) opencv人臉檢測--detectMultiScale函數_walker lee的博客-CSDN博客_detectmultiscale文章來源地址http://www.zghlxwxcb.cn/news/detail-470824.html

到了這里,關于OpenCV人臉識別,訓練模型為cv2.face.LBPHFaceRecognizer_create()的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

領支付寶紅包贊助服務器費用

相關文章

  • 使用C++和OpenCV進行人臉識別,包含模型訓練與調用過程

    人臉識別是計算機視覺領域的一個重要應用,可以用于安全系統(tǒng)、人臉解鎖和人臉表情分析等方面。本教程將向您展示如何使用C++和OpenCV庫實現基本的人臉識別功能。我們將分為兩部分,首先是模型訓練過程,然后是調用過程。 安裝OpenCV和C++開發(fā)環(huán)境: 在開始之前,請確保

    2024年02月09日
    瀏覽(25)
  • opencv基礎57-模板匹配cv2.matchTemplate()->(目標檢測、圖像識別、特征提取)

    opencv基礎57-模板匹配cv2.matchTemplate()->(目標檢測、圖像識別、特征提取)

    OpenCV 提供了模板匹配(Template Matching)的功能,它允許你在圖像中尋找特定模板(小圖像)在目標圖像中的匹配位置。模板匹配在計算機視覺中用于目標檢測、圖像識別、特征提取等領域。 以下是 OpenCV 中使用模板匹配的基本步驟: 加載圖像 : 首先,加載目標圖像和要匹配

    2024年02月13日
    瀏覽(17)
  • OpenCV人臉識別項目(訓練+測試)

    OpenCV人臉識別項目(訓練+測試)

    圖片來自網上,如果侵權,告知則刪除 批量修改文件名(常見文件操作,可以學習一下) 進入正題? (一)讀取圖片 (二)灰度轉換 (三)修改尺寸 (四)繪制矩形 (五)人臉檢測 (六)檢測多個人臉 (七)視頻檢測 ?(八)拍照保存 準備數據集 訓練集train ?注意:第

    2024年02月04日
    瀏覽(22)
  • 人臉識別(opencv--LBPH方法訓練)

    一、準備數據 1.利用人臉檢測方法,先將圖像的人臉部分截取成圖像 2.批量讀取圖像,制作成圖像與標簽對應的列表 二、開始訓練 3.訓練(使用opencv自帶的訓練方法) 4.調用 HOG人臉檢測器 1.利用人臉檢測方法,先將圖像的人臉部分截取成圖像 選用HOG的目的是為了方便而已,你完全

    2024年02月05日
    瀏覽(19)
  • opencv基礎49-圖像輪廓02-矩特征cv2.moments()->(形狀分析、物體檢測、圖像識別、匹配)

    opencv基礎49-圖像輪廓02-矩特征cv2.moments()->(形狀分析、物體檢測、圖像識別、匹配)

    矩特征(Moments Features)是用于圖像分析和模式識別的一種特征表示方法,用來描述圖像的形狀、幾何特征和統(tǒng)計信息。矩特征可以用于識別圖像中的對象、檢測形狀以及進行圖像分類等任務。 矩特征通過計算圖像像素的高階矩來提取特征。這些矩可以表示圖像的中心、尺度

    2024年02月13日
    瀏覽(23)
  • 【opencv】python實現人臉檢測和識別訓練

    【opencv】python實現人臉檢測和識別訓練

    OpenCV 中的人臉識別通?;诠柼卣鞣诸惼鳎℉aar Cascade Classifier)進行。以下是 OpenCV 人臉識別的基本原理: Haar Cascade Classifier : 特征分類器 :Haar 特征是一種基于矩形區(qū)域的特征,可以用于圖像中的對象檢測。這些特征可以表示邊緣、線和區(qū)域的變化等。 級聯分類器 :

    2024年01月17日
    瀏覽(22)
  • Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之六 簡單進行人臉訓練與識別

    Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之六 簡單進行人臉訓練與識別

    目錄 Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之六 簡單進行人臉訓練與識別 一、簡單介紹 二、簡單進行人臉訓練與識別 1、LBPH(Local Binary Patterns Histograms)算法進行人臉訓練和識別 2、實現步驟: 3、判斷是誰的人臉: 案例中涉及的關鍵函數說

    2024年04月26日
    瀏覽(144)
  • 報錯信息:AttributeError: module ‘cv2‘ has no attribute ‘face‘

    報錯信息:AttributeError: module ‘cv2‘ has no attribute ‘face‘

    在使用pycharm做人臉識別項目時,調用OpenCV庫,也就是cv2庫中的face模塊時,程序報錯,信息如下 face模塊實際上并不是opencv庫的一部分。更確切地說,face是部分的的opencv-contrib庫。所以,需要安裝opencv-contrib庫。 方法一:可以使用cmd進行安裝 方法二:如果使用的是pycharm ,也可

    2024年02月16日
    瀏覽(17)
  • 人臉識別 - 使用FaceNet或ArcFace在LFW數據集上訓練一個人臉識別模型

    目錄 介紹 LFW數據集 FaceNet模型 ArcFace模型 實現 加載數據集

    2024年02月06日
    瀏覽(21)
  • face_recognition人臉識別與人臉檢測

    1、安裝face_recognition庫 face_recognition庫的人臉識別是基于業(yè)內領先的C++開源庫dlib中的深度學習模型,安裝face_recognition庫的同時會一并安裝dlib深度學習框架。 2、face_recognition庫的使用 1)load_image_file加載要識別的人臉圖像 這個方法主要是用于加載要識別的人臉圖像,返回的數據

    2024年02月13日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包