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...