opencv級聯分類器實現人臉檢測(python)

  • OpenCV是一個基於BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac
    OS操作系統上。它輕量級而且高效——由一系列 C 函數和少量 C++
    類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。

    官網下載sdk
    https://opencv.org/ OPENCV

  • 本文利用python檢測人臉
    在這裏插入圖片描述

  • 首先安裝opencv的python庫
    可以直接用 pip 包管理工具進行安裝,打開cmd直接輸入: pip3 install opencv-python
    如果提示需更新pip可以輸入(python -m pip install --upgrade pip)
    下載速度過慢的話可以嘗試把下載的鏡像節點換爲國內的,速度扛扛的!
    在這裏插入圖片描述
    下面是opencv官方提供訓練好的分類器,可以直接使用。
    如果需要檢測別的可以自己訓練,需要大量的樣本。
    本次使用了 lbpcascade_frontalface.xml這一個分類器檢測人臉
    在這裏插入圖片描述
    下面是代碼。

import cv2

# 訓練好的人臉分類器
facePath = "lbpcascade_frontalface.xml"
faceCascade = cv2.CascadeClassifier(facePath)
# 引入圖片
img = cv2.imread("timg.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 檢測人臉
faces = faceCascade.detectMultiScale(
    gray,
    scaleFactor= 1.1,
    minNeighbors=8,
    minSize=(55, 55),
    flags=cv2.CASCADE_SCALE_IMAGE
)

# 畫出人臉紅色框框
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2)
    roi_gray = gray[y:y+h, x:x+w]
    roi_color = img[y:y+h, x:x+w]

# 顯示
cv2.imshow('img', img)
c = cv2.waitKey(0)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章