Python是一門強(qiáng)大的編程語言,可以用于多種應(yīng)用領(lǐng)域。其中之一就是圖像處理與計(jì)算機(jī)視覺。使用Python,我們可以輕松地操作計(jì)算機(jī)的攝像頭,并利用圖像處理技術(shù)進(jìn)行人臉的檢測、識別等操作。
# 導(dǎo)入所需的庫 import cv2 import numpy as np # 創(chuàng)建攝像頭對象 cap = cv2.VideoCapture(0) # 構(gòu)建人臉識別器 face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') # 開始捕捉視頻 while True: ret, frame = cap.read() # 讀取攝像頭 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 轉(zhuǎn)化為灰度圖像 # 檢測人臉 faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) # 在人臉位置畫出矩形框 for (x,y,w,h) in faces: cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2) # 顯示畫面 cv2.imshow('frame',frame) # 按下q鍵退出 if cv2.waitKey(1) & 0xFF == ord('q'): break # 釋放攝像頭資源 cap.release() # 關(guān)閉窗口 cv2.destroyAllWindows()
在這段代碼中,我們首先導(dǎo)入了需要的庫,包括OpenCV和Numpy。然后創(chuàng)建了一個(gè)攝像頭對象cap,并利用cv2.VideoCapture(0)獲取電腦中的攝像頭。接下來,我們構(gòu)建人臉識別器face_cascade,并利用cv2.CascadeClassifier來加載一個(gè)已有的人臉檢測模型,這里選用了默認(rèn)的模型文件'haarcascade_frontalface_default.xml'。
在while循環(huán)中,我們使用cap.read()方法讀取攝像頭拍攝的視頻,并將其轉(zhuǎn)化為灰度圖像。然后,使用face_cascade.detectMultiScale方法,對灰度圖像進(jìn)行人臉檢測。這個(gè)方法返回一個(gè)四元組(x,y,w,h),表示檢測到的人臉的左上角坐標(biāo)(x,y)以及寬度w和高度h。接著,我們利用cv2.rectangle在人臉位置畫出矩形框。
最后,我們利用cv2.imshow方法將幀數(shù)據(jù)展示出來,并設(shè)置一個(gè)'q'的退出條件,按下q鍵即可退出程序。最后,釋放攝像頭資源并關(guān)閉窗口。