借助攝像頭在Python中實現人臉檢測

2021-07-29 11:13:13 字數 1813 閱讀 6110

1、使用opencv中自帶的訓練器和檢測器。如果你想自己訓練乙個分類器來檢測汽車,飛機等的話,可以使用opencv來構建。

2、opencv中已經包含了很多已經訓練好的分類器,其中包括:面部,眼睛,微笑等。這些xml檔案儲存在:/opencv/data/haarcascades/檔案中。下面我將使用opencv建立乙個面部和眼睛的檢測器。**如下:

import cv2

import numpy as np

face_cascade = cv2.cascadeclassifier("haarcascade_frontalface_default.xml")

eye_cascade = cv2.cascadeclassifier("haarcascade_eye.xml")

cap=cv2.videocapture(0)

while true:

ret,img=cap.read()

#our operations on the frame come hereq

gray=cv2.cvtcolor(img,cv2.color_bgr2gray)

# 識別輸入中的人臉物件.返回物件的矩形尺寸

# 函式原型detectmultiscale(gray, 1.2,3,cv_haar_scale_image,size(30, 30))

# gray需要識別的

# 1.1:表示每次影象尺寸減小的比例

# 5:表示每乙個目標至少要被檢測到4次才算是真的目標(因為周圍的畫素和不同的視窗大小都可以檢測到人臉)

# cv_haar_scale_image表示不是縮放分類器來檢測,而是縮放影象,size(30, 30)為目標的最小最大尺寸

# faces:表示檢測到的人臉目標序列

faces = face_cascade.detectmultiscale(

gray,

scalefactor=1.1,

minneighbors=5,

minsize=(30, 30),

flags=cv2.cv

.cv_haar_scale_image)

if len(faces)>0:

for facerect in faces:

x,y,w,h = facerect

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

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

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

eyes = eye_cascade.detectmultiscale(roi_gray,1.1,1,cv2.cascade_scale_image,(2,2))

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)

if cv2.waitkey(1) & 0xff == ord('q'):

break

#display the resulting frame

#cv2.imshow('frame',gray)

#when everything done ,release the capture

cap.release()

#cv2.destoryallwindows()

效果圖:

C 借助OpenCvSharp讀取攝像頭並顯示

1,首先要安裝opencvsharp,使用cv2的函式獲取裝置,並將影象轉換到bitmap using opencvsharp using opencvsharp.extensions void run cap 2,在呼叫時開啟執行緒,可以在主函式內呼叫,也可在按鈕內呼叫 private void ...

攝像頭測距實現

普通攝像頭利用人臉識別技術與景深應用實現測距 今天看到有人問能不能用攝像頭來檢測距離,我剛開始覺得這幾乎是個不可能的事情,大家都知道這幾天都不讓出門,就窩在家裡想這個事。靈光一現,為什麼不將人臉識別與測距結合起來就可以實現了。具體演算法原理暫不公開 人臉識別可以使用opencv自帶的,也可以使用開源...

Python呼叫攝像頭

如下 import cv2 import numpy 建立攝像頭物件 cap cv2.videocapture videotest test1.mp4 cap cv2.videocapture 0 引數為本地攝像頭 cap cv2.videocapture 1 引數為usb攝像頭 while 1 r...