import cv2
def facedetector(window_name, camera_id):
cap = cv2.videocapture(camera_id)
#使用opencv自帶人臉識別分類器,預設在pyhon的安裝目錄下
classfier = cv2.cascadeclassifier("d:\\installsoftware\\python\\python38\\lib\\site-packages\\cv2\\data\\haarcascade_frontalface_alt2.xml")
#識別出人臉後要畫的邊框的顏色,rgb格式
color = (0, 255, 0)
while cap.isopened():
ret, frame = cap.read()
if not ret:
break
#調整幀的大小
#定義攝像頭採集的影象比例係數
scaling_factor = 0.5
frame = cv2.resize(frame,none,fx=scaling_factor,fy=scaling_factor,interpolation=cv2.inter_area)
#將當前幀轉換成灰度影象
grey = cv2.cvtcolor(frame, cv2.color_bgr2gray)
#人臉檢測1.3和4分別為每次縮放比例和需要檢測的有效點數
facerects = classfier.detectmultiscale(grey, scalefactor=1.1,minneighbors=4,minsize=(32,32))
#大於0則檢測到人臉
if len(facerects) > 0:
#在識別到的多個人臉中框出一張人臉
for facerect in facerects:
x, y, w, h = facerect
cv2.rectangle(frame,(x,y),(x+w,y+h),color,2)
#將一幀影象顯示出來
cv2.imshow(window_name, frame)
#每次等待1ms 當esc按鍵被按下時退出顯示
#esc按鍵對應的鍵值為27
if (cv2.waitkey(1) & 0xff) == 27:
break
cap.release()
#關閉所以的活動視窗
cv2.destroyallwindows()
if __name__ == '__main__':
facedetector("face detector", 700)
以上**並不複雜,主要備註一下detectmultiscale方法的引數:
detectmultiscale函式介紹:
引數2:objects--被檢測物體的矩形框向量組;
引數3:scalefactor--表示在前後兩次相繼的掃瞄中,搜尋視窗的比例係數。預設為1.1即每次搜尋視窗依次擴大10%(簡單理解就是分類器每次在中識別完成後會將縮小一定比例,對應的人臉也會變小,再一次遍歷識別進而增加識別到的機率);
引數4:minneighbors--表示構成檢測目標的相鄰矩形的最小個數(預設為3個)。如果組成檢測目標的小矩形的個數和小於 min_neighbors - 1 都會被排除。如果min_neighbors 為 0, 則函式不做任何操作就返回所有的被檢候選矩形框,這種設定值一般用在使用者自定義對檢測結果的組合程式上(簡單理解為在同一區域內識別到人臉的次數大於等於設定值時,則判斷為識別到了有效人臉);
引數5:flags--要麼使用預設值,要麼使用cv_haar_do_canny_pruning,如果設定為cv_haar_do_canny_pruning,那麼函式將會使用canny邊緣檢測來排除邊緣過多或過少的區域,因此這些區域通常不會是人臉所在區域;
引數6、7:minsize和maxsize用來限制得到的目標區域的範圍(無需多言)。
利用anaconda安裝OpenCV
然後一步步安裝,簡單入門教程 利用anaconda安裝opencv 開啟anaconda prompt 在此終端中進行換源,切換到清華的映象源 conda config add channels conda config add channels conda config set show chan...
利用OpenCV提取目標輪廓
乙個簡單的提取飛機目標影象 二值圖 輪廓的程式 include include include include iplimage g image null iplimage g gray null int g thresh 100 cvmemstorage g storage null char n...
利用opencv檢測出矩形
pragma once include troot.h include cbintoprofile.h include th1.h include cbmpdiff.h include ccircletopeak.h include ccolorcut.h include ccubicbspline...