最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

opencv基于Haar人臉檢測(cè)和眼睛檢測(cè)

 更新時(shí)間:2021年09月05日 17:28:26   作者:過(guò)去的時(shí)候  
這篇文章主要為大家詳細(xì)介紹了opencv基于Haar人臉檢測(cè)和眼睛檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文為大家分享了opencv基于Haar人臉檢測(cè)和眼睛檢測(cè)的具體代碼,供大家參考,具體內(nèi)容如下

在這里,我們將進(jìn)行人臉檢測(cè)。最初,該算法需要大量正圖像(面部圖像)和負(fù)圖像(無(wú)面部圖像)來(lái)訓(xùn)練分類器。然后,我們需要從中提取特征。為此,使用下圖所示的Haar功能。它們就像我們的卷積核。每個(gè)特征都是通過(guò)從黑色矩形下的像素總和中減去白色矩形下的像素總和而獲得的單個(gè)值。

現(xiàn)在,每個(gè)內(nèi)核的所有可能大小和位置都用于計(jì)算許多功能。(試想一下它需要多少計(jì)算?即使是一個(gè)24x24的窗口也會(huì)產(chǎn)生超過(guò)160000個(gè)特征)。對(duì)于每個(gè)特征計(jì)算,我們需要找到白色和黑色矩形下的像素總和。為了解決這個(gè)問(wèn)題,他們引入了整體形象。無(wú)論您的圖像有多大,它都會(huì)將給定像素的計(jì)算減少到僅涉及四個(gè)像素的操作。很好,不是嗎?它使事情變得超快。

但是在我們計(jì)算的所有這些功能中,大多數(shù)都不相關(guān)。例如,考慮下圖。第一行顯示了兩個(gè)良好的功能。選擇的第一個(gè)特征似乎著眼于眼睛區(qū)域通常比鼻子和臉頰區(qū)域更暗的性質(zhì)。選擇的第二個(gè)功能依賴于眼睛比鼻梁更黑的屬性。但是,將相同的窗口應(yīng)用于臉頰或其他任何地方都是無(wú)關(guān)緊要的。那么,我們?nèi)绾螐?6萬(wàn)多個(gè)功能中選擇最佳功能?它是由Adaboost實(shí)現(xiàn)的。

為此,我們將所有功能應(yīng)用于所有訓(xùn)練圖像。對(duì)于每個(gè)功能,它會(huì)找到最佳的閾值,該閾值會(huì)將人臉?lè)譃檎婧拓?fù)面。顯然,會(huì)出現(xiàn)錯(cuò)誤或分類錯(cuò)誤。我們選擇錯(cuò)誤率最低的特征,這意味著它們是對(duì)人臉和非人臉圖像進(jìn)行最準(zhǔn)確分類的特征。(此過(guò)程并非如此簡(jiǎn)單。在開始時(shí),每個(gè)圖像的權(quán)重均相等。在每次分類后,錯(cuò)誤分類的圖像的權(quán)重都會(huì)增加。然后執(zhí)行相同的過(guò)程。將計(jì)算新的錯(cuò)誤率。還要計(jì)算新的權(quán)重。繼續(xù)進(jìn)行此過(guò)程,直到達(dá)到所需的精度或錯(cuò)誤率或找到所需的功能數(shù)量為止。

最終分類器是這些弱分類器的加權(quán)和。之所以稱為弱分類,是因?yàn)閮H憑它不能對(duì)圖像進(jìn)行分類,而是與其他分類一起形成強(qiáng)分類器。該論文說(shuō),甚至200個(gè)功能都可以提供95%的準(zhǔn)確度檢測(cè)。他們的最終設(shè)置具有大約6000個(gè)功能。(想象一下,從160000多個(gè)功能減少到6000個(gè)功能。這是很大的收獲)。

因此,現(xiàn)在您拍攝一張照片。取每個(gè)24x24窗口。向其應(yīng)用6000個(gè)功能。檢查是否有臉。哇…這不是效率低下又費(fèi)時(shí)嗎?是的。作者對(duì)此有一個(gè)很好的解決方案。

在圖像中,大多數(shù)圖像是非面部區(qū)域。因此,最好有一種簡(jiǎn)單的方法來(lái)檢查窗口是否不是面部區(qū)域。如果不是,請(qǐng)一次性丟棄它,不要再次對(duì)其進(jìn)行處理。相反,應(yīng)將重點(diǎn)放在可能有臉的區(qū)域。這樣,我們將花費(fèi)更多時(shí)間檢查可能的面部區(qū)域。

為此,他們引入了級(jí)聯(lián)分類器的概念。不是將所有6000個(gè)功能部件應(yīng)用到一個(gè)窗口中,而是將這些功能部件分組到不同階段的分類器中,并一一應(yīng)用。(通常前幾個(gè)階段將包含很少的功能)。如果窗口在第一階段失敗,則將其丟棄。我們不考慮它的其余功能。如果通過(guò),則應(yīng)用功能的第二階段并繼續(xù)該過(guò)程。經(jīng)過(guò)所有階段的窗口是一個(gè)面部區(qū)域。這個(gè)計(jì)劃怎么樣!

作者的檢測(cè)器具有6000多個(gè)特征,具有38個(gè)階段,在前五個(gè)階段具有1、10、25、25和50個(gè)特征。(上圖中的兩個(gè)功能實(shí)際上是從Adaboost獲得的最佳兩個(gè)功能)。根據(jù)作者的說(shuō)法,每個(gè)子窗口平均評(píng)估了6000多個(gè)特征中的10個(gè)特征。
首先,創(chuàng)建一個(gè)cv :: CascadeClassifier并使用cv :: CascadeClassifier :: load方法加載必要的XML文件。然后,使用cv :: CascadeClassifier :: detectMultiScale方法完成檢測(cè),該方法返回檢測(cè)到的臉部或眼睛的邊界矩形

from __future__ import print_function
import cv2 as cv
import argparse
def detectAndDisplay(frame):
    frame_gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)#灰度處理
    frame_gray = cv.equalizeHist(frame_gray)#直方圖均衡化
    #-- Detect faces
    faces = face_cascade.detectMultiScale(frame_gray)
    for (x,y,w,h) in faces:
        center = (x + w//2, y + h//2)#獲取方框中心位置
        frame = cv.ellipse(frame, center, (w//2, h//2), 0, 0, 360, (255, 0, 255), 4)#畫橢圓
        faceROI = frame_gray[y:y+h,x:x+w]#獲取感興趣的區(qū)域,即人臉矩形
        #-- In each face, detect eyes
        eyes = eyes_cascade.detectMultiScale(faceROI)
        for (x2,y2,w2,h2) in eyes:
            eye_center = (x + x2 + w2//2, y + y2 + h2//2)#獲取眼睛中心
            radius = int(round((w2 + h2)*0.25))#獲取半徑
            frame = cv.circle(frame, eye_center, radius, (255, 0, 0 ), 4)
    cv.imshow('Capture - Face detection', frame)
parser = argparse.ArgumentParser(description='Code for Cascade Classifier tutorial.')
parser.add_argument('--face_cascade', help='Path to face cascade.', default='haarcascades/haarcascade_frontalface_alt.xml')
parser.add_argument('--eyes_cascade', help='Path to eyes cascade.', default='haarcascades/haarcascade_eye_tree_eyeglasses.xml')
parser.add_argument('--camera', help='Camera divide number.', type=int, default=0)
args = parser.parse_args()
face_cascade_name = args.face_cascade
eyes_cascade_name = args.eyes_cascade
face_cascade = cv.CascadeClassifier()
eyes_cascade = cv.CascadeClassifier()
#-- 1. Load the cascades
if not face_cascade.load(cv.samples.findFile(face_cascade_name)):
    print('--(!)Error loading face cascade')
    exit(0)
if not eyes_cascade.load(cv.samples.findFile(eyes_cascade_name)):
    print('--(!)Error loading eyes cascade')
    exit(0)
camera_device = args.camera
#-- 2. Read the video stream
cap = cv.VideoCapture(camera_device)
if not cap.isOpened:
    print('--(!)Error opening video capture')
    exit(0)
while True:
    ret, frame = cap.read()
    if frame is None:
        print('--(!) No captured frame -- Break!')
        break
    detectAndDisplay(frame)
    if cv.waitKey(10) == 27:
        break

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

相關(guān)文章

  • Python3中安裝后SSL問(wèn)題及解決

    Python3中安裝后SSL問(wèn)題及解決

    這篇文章主要介紹了Python3中安裝后SSL問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 基于python使用tibco ems代碼實(shí)例

    基于python使用tibco ems代碼實(shí)例

    這篇文章主要介紹了基于python使用tibco ems代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python中aiohttp的簡(jiǎn)單使用

    Python中aiohttp的簡(jiǎn)單使用

    aiohttp是Python中一個(gè)強(qiáng)大的異步HTTP客戶端和服務(wù)器框架,它可以幫助開發(fā)者快速構(gòu)建高性能的Web應(yīng)用程序。本文將介紹aiohttp的基本概念、使用方法和常見(jiàn)應(yīng)用場(chǎng)景,幫助讀者更好地了解和使用這個(gè)優(yōu)秀的框架
    2023-03-03
  • Pycharm編輯器功能之代碼折疊效果的實(shí)現(xiàn)代碼

    Pycharm編輯器功能之代碼折疊效果的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Pycharm編輯器功能之代碼折疊效果的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Zabbix實(shí)現(xiàn)微信報(bào)警功能

    Zabbix實(shí)現(xiàn)微信報(bào)警功能

    這篇文章主要介紹了Zabbix實(shí)現(xiàn)微信報(bào)警的相關(guān)資料,本文圖文并茂介紹的非常詳細(xì),需要的朋友可以參考下
    2016-10-10
  • Pycharm如何自動(dòng)生成頭文件注釋

    Pycharm如何自動(dòng)生成頭文件注釋

    這篇文章主要介紹了Pycharm如何自動(dòng)生成頭文件注釋,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python實(shí)現(xiàn)nao機(jī)器人手臂動(dòng)作控制

    python實(shí)現(xiàn)nao機(jī)器人手臂動(dòng)作控制

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)nao機(jī)器人手臂動(dòng)作控制,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python中str is not callable問(wèn)題詳解及解決辦法

    Python中str is not callable問(wèn)題詳解及解決辦法

    這篇文章主要介紹了Python中str is not callable問(wèn)題詳解及解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • python實(shí)現(xiàn)換位加密算法的示例

    python實(shí)現(xiàn)換位加密算法的示例

    今天小編就為大家分享一篇python實(shí)現(xiàn)換位加密算法的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python對(duì)切片命名的實(shí)現(xiàn)方法

    Python對(duì)切片命名的實(shí)現(xiàn)方法

    在本篇文章里我們給大家分享了關(guān)于Python對(duì)切片命名的實(shí)現(xiàn)方法的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們學(xué)習(xí)下。
    2018-10-10

最新評(píng)論

沭阳县| 怀来县| 揭阳市| 宣化县| 务川| 上思县| 普定县| 社旗县| 贵德县| 曲靖市| 古丈县| 阿拉善左旗| 诸城市| 大渡口区| 昌黎县| 磐安县| 沙坪坝区| 墨脱县| 舟曲县| 和田县| 南充市| 竹山县| 玉田县| 合山市| 依兰县| 贞丰县| 安远县| 北辰区| 潜山县| 沧州市| 松阳县| 大新县| 婺源县| 隆昌县| 格尔木市| 彭山县| 谢通门县| 临澧县| 九龙县| 明水县| 蒙阴县|