Python圖像處理,cv2模塊,OpenCV實現人臉檢測 前言 開發工具 環境搭建 圖片檢測 結果展示 檢測視頻

前言

利用Python實現OpenCV實現人臉檢測,廢話不多說~

讓我們愉快地開始吧~

開發工具

Python版本: 3.6.4

相關模塊:

cv2模塊;

以及一些Python自帶的模塊。

環境搭建

安裝Python並添加到環境變量,pip安裝需要的相關模塊即可。

OpenCV是一個開源、跨平臺的計算機視覺庫,可以用於各種圖像和視頻處理操作。

今天就來告訴大家如何通過OpenCV對人臉進行檢測

圖片檢測

看一下圖片檢測,原圖

訓練數據是現成的,利用現成的數據,通過訓練進而來檢測人臉

具體代碼如下

import cv2

# 圖片名
filename = 'cxk.png'


def detect(filename):
    # cv2級聯分類器CascadeClassifier,xml文件爲訓練數據
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    # 讀取圖片
    img = cv2.imread(filename)
    # 轉灰度圖
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 進行人臉檢測
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    # 繪製人臉矩形框
    for (x, y, w, h) in faces:
        img = cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
    # 命名顯示窗口
    cv2.namedWindow('people')
    # 顯示圖片
    cv2.imshow('people', img)
    # 保存圖片
    cv2.imwrite('cxks.png', img)
    # 設置顯示時間,0表示一直顯示
    cv2.waitKey(0)

detect(filename)

結果展示

檢測視頻

視頻用的抖音的上的視頻

這裏只截取檢測效果比較好的視頻段作爲例子

畢竟訓練數據的質量擺在那裏,有的時候會出現一些錯誤

如想提高檢測的精度,便需要一個高質量的人臉數據庫

具體代碼如下

import cv2


def face_rec():
    # 加載視頻
    cameraCapture = cv2.VideoCapture('video.mp4')
    # cv2級聯分類器CascadeClassifier,xml文件爲訓練數據
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    # 讀取數據
    success, frame = cameraCapture.read()
    while success and cv2.waitKey(1) == -1:
        # 讀取數據
        ret, img = cameraCapture.read()
        # 進行人臉檢測
        faces = face_cascade.detectMultiScale(img, 1.3, 5)
        # 繪製矩形框
        for (x, y, w, h) in faces:
            img = cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
        # 設置顯示窗口
        cv2.namedWindow('camera', 0)
        cv2.resizeWindow('camera', 840, 480)
        # 顯示處理後的視頻
        cv2.imshow('camera', img)
        # 讀取數據
        success, frame = cameraCapture.read()
    # 釋放視頻
    cameraCapture.release()
    # 釋放所有窗口
    cv2.destroyAllWindows()


if __name__ == '__main__':
    face_rec()

結果爲視頻,這裏就不展示了大家可以去網上找下視頻做測試就會明白~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章