前言
利用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()
結果爲視頻,這裏就不展示了大家可以去網上找下視頻做測試就會明白~