国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯
        加入自媒體

        在 python 中使用 Haar-Cascade 進行人臉檢測

        2022-12-06 11:50
        磐創AI
        關注

        介紹

        在本文中,我們將討論在 OpenCV python 中使用 Haar Cascade(級聯)實現人臉檢測器。

        識別圖像中的給定對象稱為對象檢測。可以使用多種技術來完成此任務,但在本文中,我們將使用帶有預訓練 XML 文件的 haar 級聯。這是執行對象檢測的最簡單方法。

        Haar 級聯已用于低邊緣設備上的對象檢測,它是 OpenCV 中最流行的對象檢測算法之一。

        Haar 級聯計算量不大;因此它適用于計算能力較小的小型設備。

        Haar 級聯

        什么是 Haar 級聯,它是如何工作的?

        Haar 級聯 是一種基于特征的對象檢測算法,用于從圖像中檢測對象。Cascade 函數在大量正負圖像上進行訓練以進行檢測。

        該算法不需要大量計算并且可以實時運行。我們可以為動物、汽車、自行車等自定義對象訓練自己的級聯函數。

        Haar 級聯 不能用于人臉識別,因為它只能識別匹配的形狀和大小。

        Haar 級聯使用 Cascade 函數和 Cascade 窗口。它嘗試計算每個窗口的特征并進行正負分類。如果窗口可以是對象的一部分,則為正,否則為負。

        Haar 級聯可以理解為二進制分類器。它為那些可以成為我們對象一部分的級聯窗口指定正值,為那些不能成為我們對象的一部分的窗口指定負值。

        · Haar 級聯可以實時工作。

        · 與現代對象檢測算法相比,Haar 級聯并不準確。

        · 它檢測到許多誤報。這可以在一定程度上進行調整,但不能完全刪除。

        · 實現起來非常簡單。

        · Haar 級聯最大的缺點是它的誤報檢測。

        預訓練的 Haar 級聯

        有許多預訓練的 haar 級聯文件使實施變得超級容易。我們也可以訓練自己的 haar 級聯,但這需要大數據進行訓練。

        OpenCV 庫在 GitHub 上管理所有流行的 haar 級聯預訓練文件的存儲庫

        這些文件可用于各種對象檢測任務,例如:

        · 人臉檢測

        · 眼睛檢測

        · 車輛檢測

        · 鼻子/嘴巴檢測

        · 身體檢測

        · 車牌檢測

        Haar 級聯將其特征存儲在一個 XML 文件中;這些文件可以直接加載到 OpenCV 中,使用 Haar 級聯進行對象檢測。

        在 OpenCV 中實現 Haar 級聯

        如果你正在使用 OpenCV 提供的存儲庫中可用的任何預訓練對象檢測,則只需下載預訓練的 XML 文件。

        在 Python 中安裝 OpenCV

        可以使用 python 中的 pip 包管理器安裝 OpenCV。

        !pip install opencv-python

        #---OR ---

        !pip install opencv-contrib-python

        在 OpenCV 中加載 Haar 級聯

        我們可以使用函數cv2.CascadeClassifier加載 haar-cascade XML 文件。

        face_detector=cv2.CascadeClassifier(‘haarcascade_frontalface_default.xml’)

        eye_dectector = cv2.CascadeClassifier(‘haarcascade_eye.xml’)

        一旦加載了 XML 文件,我們就可以調用檢測器函數。

        results = face_detector.detectMultiScale(gray_img, scaleFactor=1.15,minNeighbors=5,minSize=(34, 35), flags=cv2.CASCADE_SCALE_IMAGE)


        # import the necessary packages

        import cv2


        face_detector=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

        eye_dectector = cv2.CascadeClassifier('haarcascade_eye.xml')

        image = cv2.imread('tomato.jpg')

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

        results = face_detector.detectMultiScale(gray_img, scaleFactor=1.15,minNeighbors=5,minSize=(34, 35), flags=cv2.CASCADE_SCALE_IMAGE)

        print(results)

        results是檢測到的對象周圍的邊界框坐標 (x,y,w,h) 的列表。

        detectMultiScale中的參數:

        · scaleFactor:這表示對象的大小與原始圖像相比減小了多少。

        · minNeighbors:此參數告訴在單個邊界框中應該有多少個鄰居。

        · minSize?:這表示我們圖像中對象的最小可能大小。如果我們的對象小于 minSize ,它將被忽略。

        注意:對于對象檢測,我們必須使用gray_image, minNeighbors,scaleFactor等參數。

        人臉檢測

        讓我們以第一個使用預訓練 haar 級聯的對象檢測示例為例,我們將使用 Python 從圖片中檢測人臉。

        import numpy as np

        import cv2

        #---loading the Haar 級聯 detector using CascadeClassifier---face_detector=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

        #---Loading the image from local -----

        img = cv2.imread('team_india.jpg')

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

        results = face_detector.detectMultiScale(gray, 1.3, 5)

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

           cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
          

        cv2.imshow('img',img)

        cv2.waitKey(0)

        cv2.destroyAllWindows()

        · results它包含圖片中邊界框的坐標。

        · detectMultiScale此方法僅適用于灰度圖片。

        · cv2.rectangle允許我們在傳遞坐標后繪制矩形。

        · scaleFactor = 1.3FineTuning 參數,取值范圍從 1 到 2。

        分級檢測

        Haarcascade 支持分級檢測,這意味著 Haar 級聯能夠以分級方式檢測單個幀內的多個對象。

        假設我們必須檢測人類的面部和眼睛。要繼續執行任務,我們需要執行以下步驟。

        · 檢測人臉

        · 對于每張臉,裁剪人臉并將其轉發以進行眼睛檢測

        · 在找到眼睛的坐標 ( ex,ey,ew,eh) 后,在原始圖片中的眼睛周圍繪制一個邊界框。

        · 在原始圖片上使用坐標(x,y,w,h)在面部周圍繪制一個邊界框。

        import numpy as np

        import cv2

        face_detector1=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

        eye_detector1 = cv2.CascadeClassifier('haarcascade_eye.xml')

        img = cv2.imread('uman.jpg')

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

        faces_result = face_detector.detectMultiScale(gray, 1.3, 5)

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

        img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)

        roi_gray = gray[y:y+h, x:x+w]

        roi_color = img[y:y+h, x:x+w]

        eyes = eye_detector.detectMultiScale(roi_gray)

        for (ex,ey,ew,eh) in eyes:

        cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)

        cv2.imshow('img',img)

        cv2.waitKey(0)

        cv2.destroyAllWindows()

        實時實現人臉檢測

        我們可以在 OpenCV 視頻流中使用 Haar 級聯進行對象檢測,只需要在 OpenCV 中讀取視頻或攝像頭,其余的都是一樣的。

        視頻源是一系列幀,因此代碼與單個幀相同。由于其輕計算要求,Haar 級聯每秒運行良好。

        我們將讀取 OpenCV 視頻攝像頭輸入以實時拍攝圖像。

        import cv2

        face_detector1 = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

        eye_dectector1 = cv2.CascadeClassifier('haarcascade_eye.xml')

        # reading the input image now

        cap = cv2.VideoCapture(0)

        while cap.isOpened():

           _, frame = cap.read()

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

           faces = face_detector1.detectMultiScale(gray,1.1, 4 )

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

           cv2.rectangle(frame, pt1 = (x,y),pt2 = (x+w, y+h), color = (255,0,0),thickness =  3)

           roi_gray = gray[y:y+h,x:x+w]

           roi_color = frame[y:y+h, x:x+w]

           eyes = eye_dectector1.detectMultiScale(roi_gray)

           for (ex,ey, ew, eh) in eyes:

               cv2.rectangle(roi_color, (ex,ey), (ex+ew, ey+eh), (0,255,0), 5)

           cv2.imshow("window", frame)

           if cv2.waitKey(1) & 0xFF == ord('q'):

              break

        frame.release()

        眼睛和面部的邊界框將是實時的,并且每幀都會發生變化。

        Haar 級聯人臉檢測的局限性

        Haar 級聯對于人臉、汽車等一些對象仍然很受歡迎,這些對象很容易區分。

        Haar 級聯不能用于深度目標檢測,如谷物類型等。

        Haar 級聯算法有一些限制:

        · 與現代對象檢測器相比,精度較低。

        · 高假陽性檢測。

        · 需要手動調整參數。

        · 為自定義對象訓練 haar 級聯并不容易。

        結論

        在本文中,我們討論了 haar 級聯的工作原理以及如何在 python 中使用 OpenCV實現 haar 級聯以進行對象檢測。我們使用預訓練的 haar 級聯文件進行人臉檢測和眼睛檢測,然后我們實時執行相同的操作。

        我們還談到了 haar 級聯算法的局限性,為什么它仍然被廣泛使用,為什么它這么快。

        · 可以使用手動參數調整來修復誤報率。

        · YOLO、SSD 和其他深度學習對象檢測算法保證了更高的準確性。

        · 訓練自定義 haar 級聯既耗時又低效。

               原文標題 : 在 python 中使用 Haar-Cascade 進行人臉檢測

        聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

        發表評論

        0條評論,0人參與

        請輸入評論內容...

        請輸入評論/評論長度6~500個字

        您提交的評論過于頻繁,請輸入驗證碼繼續

        暫無評論

        暫無評論

          掃碼關注公眾號
          OFweek人工智能網
          獲取更多精彩內容
          文章糾錯
          x
          *文字標題:
          *糾錯內容:
          聯系郵箱:
          *驗 證 碼:

          粵公網安備 44030502002758號

          主站蜘蛛池模板: 一本大道中文字幕无码29| 啪啪免费网站| 中文字幕在线天堂| 婷婷亚洲五月花视频| 国产精品一二| 欧洲一区二区三区| 熟女在线播放| 五月香蕉网| 岛国无码精品| 伊人无码视频| 瑟瑟日韩无码| 亚洲中字幕| 国产无码中文| av一区二区三区| 浦城县| 日日夜夜干| 91精品国产综合久久久蜜臀酒店| 沙洋县| 婷婷综合久久| 伊宁县| 亚洲19p| 亚洲av中文| 国产精女处破视频在线| 525f| 寿光市| 临潭县| 在线色综合| 制服.丝袜.亚洲.中文.综合| 影音先锋成人在线| 国产熟女口爆| 国产无码专区| 亚洲AV激情无码专区在线播放| 休宁县| 西和县| 个旧市| 久久无码一区| 久久天天躁狠狠躁夜夜躁2014| 屁屁影院国产第一页| 91黑丝视频| 国内精品vA| 淄博市|