基於Python的OpenCV人臉檢測

2021-10-19 18:48:29 字數 4260 閱讀 3387

注意:本文只是人臉檢測,人臉識別的實現請參見本人另一篇部落格:基於opencv+tensorflow+keras實現人臉識別

提前做的準備:

(1)**和說明

import cv2 as cv

import numpy as np

defface_detect_demo()

:#人臉檢測函式

gray = cv.cvtcolor(src, cv.color_bgr2gray)

#把變成灰度,因為人臉的特徵需要在灰度影象中查詢

#以下分別是haar和lbp特徵資料,任意選擇一種即可,注意:路徑中的『/』和『\』是有要求的

# 通過級聯檢測器 cv.cascadeclassifier,載入特徵資料

# face_detector = cv.cascadeclassifier(「d:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml」)

face_detector = cv.cascadeclassifier(

「d:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml」

)#在尺度空間對進行人臉檢測,第乙個引數是哪個,第二個引數是向上或向下的尺度變化,是原來尺度的1.02倍,第三個引數是在相鄰的幾個人臉檢測矩形框內出現就認定**臉,這裡是在相鄰的5個人臉檢測框內出現,如果比較模糊的話建議降低一點

faces = face_detector.detectmultiscale(gray,

1.02,5

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

#繪製結果圖

#rectangle引數說明,要繪製的目標影象,矩形的第乙個頂點,矩形對角線上的另乙個頂點,線條的顏色,線條的寬度

cv.rectangle(src,

(x, y)

,(x+w, y+h),(

0,0,

255),2

)cv.imshow(

「result」

, src)

#輸出結果圖

)#是jpg和png都可以

cv.namedwindow(

「input image」

, cv.window_autosize)

#建立繪圖視窗

cv.namedwindow(

「result」

, cv.window_autosize)

cv.imshow(

「input image」

, src)

face_detect_demo(

)cv.waitkey(0)

cv.destroyallwindows(

)#作用是能正常關閉繪圖視窗

(2)結果展示

(1)**和說明

import cv2 as cv

import numpy as np

def

face_detect_demo

(image)

:gray = cv.cvtcolor(image, cv.color_bgr2gray)

# face_detector = cv.cascadeclassifier(「d:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml」)

face_detector = cv.cascadeclassifier(

「d:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml」

)faces = face_detector.detectmultiscale(gray,

1.02,5

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

cv.rectangle(image,

(x, y)

,(x+w, y+h),(

0,0,

255),2

)cv.imshow(

「result」

, image)

capture = cv.videocapture(

「d:/pyproject/cv_renlianjiance/video/1.mp4」

)cv.namedwindow(

「result」

, cv.window_autosize)

while

(true):

ret, frame = capture.read(

)# cv.flip函式表示影象翻轉,沿y軸翻轉, 0: 沿x軸翻轉, <0: x、y軸同時翻轉

frame = cv.flip(frame,1)

face_detect_demo(frame)

c = cv.waitkey(10)

if c ==27:

#當鍵盤按下『esc』退出程式

break

cv.waitkey(0)

cv.destroyallwindows(

)#作用是能正常關閉繪圖視窗

(2)結果展示

**和說明

import cv2 as cv

import numpy as np

def

face_detect_demo

(image)

:gray = cv.cvtcolor(image, cv.color_bgr2gray)

# face_detector = cv.cascadeclassifier(「d:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml」)

face_detector = cv.cascadeclassifier(

「d:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml」

)faces = face_detector.detectmultiscale(gray,

1.02,5

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

cv.rectangle(image,

(x, y)

,(x+w, y+h),(

0,0,

255),2

)cv.imshow(

「result」

, image)

capture = cv.videocapture(0)

#其中的0表示電腦中的第乙個相機

cv.namedwindow(

「result」

, cv.window_autosize)

while

(true):

ret, frame = capture.read(

)# cv.flip函式表示影象翻轉,沿y軸翻轉, 0: 沿x軸翻轉, <0: x、y軸同時翻轉

frame = cv.flip(frame,1)

face_detect_demo(frame)

c = cv.waitkey(10)

if c ==27:

#當鍵盤按下『esc』退出程式

break

cv.waitkey(0)

cv.destroyallwindows(

)#作用是能正常關閉繪圖視窗

注意:本文只是人臉檢測,人臉識別的實現請參見本人另一篇部落格:基於opencv+tensorflow+keras實現人臉識別

提前做的準備:

(1)**和說明

import cv2 as cv

import numpy as np

基於python的opencv教程

第一次寫部落格,學習是要有輸入與輸出的,所謂教學相長。所以我想試著自己寫乙份教程,算是對自己的學習總結吧,部落格的排版比較直男,請湊合看吧。首先建議的ide是pycharm,opencv的庫直接pip安裝就好,最好大家有一定的python基礎。第一部分是關於圖象讀取和儲存。import cv2imp...

基於python的opencv學習

dst cv2.sobel src,ddept,dx,dy,ksize ddepth 影象的深度,一般設為 1ksize sobel運算元的大小 白到黑是正數,黑到白是負數,所有的負數都會被截斷為0,因此要使用convertscaleabs取絕對值2 拉普拉斯金字塔 1 低通濾波 2 縮小尺寸pyr...

基於Python和Opencv的目標檢測與特徵

而我們訓練分類器的過程就是給這個分類函式 數學模型 找到一系列最優的引數,使得通過這個函式來判斷時能達到最好的分類效果 更高階一點的分類器就加入了學習和自適應的概念使得分類更精準 那麼通過什麼可以得到這個分類器呢?就是分類演算法 提到演算法我們不得不提到機器學習的概念,機器學習演算法簡單來說可以通過...