上次對進行了人臉識別,這次對攝像頭捕獲的內容進行識別
直接寫注釋來解釋
import cv2def catchusbvideo(window_name, camera_idx): #定義乙個函式來實現人臉識別
cv2.namedwindow(window_name) #引數window_name給建立的視窗命名
cap = cv2.videocapture(camera_idx)
# 告訴opencv使用人臉識別分類器,還是那個opencv自帶的分類器,目錄結構和《haar的簡單應用》一樣
classfier = cv2.cascadeclassifier("../cascades/haarcascade_frontalface_default.xml")
# 綠色勾邊,rgb格式
color = (0, 255, 0)
while cap.isopened(): #迴圈檢測每一幀
ok, frame = cap.read() # 讀取一幀資料
if not ok:
break
# 將當前幀轉換成灰度影象
grey = cv2.cvtcolor(frame, cv2.color_bgr2gray)
# 人臉檢測,1.2和2分別為縮放比例和需要檢測的有效點數
facerects = classfier.detectmultiscale(grey, scalefactor=1.2, minneighbors=3, minsize=(32, 32))
if len(facerects) > 0: # 大於0則檢測到人臉
for facerect in facerects: # 單獨框出每一張人臉
x, y, w, h = facerect
cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 3) #5控制綠色框(勾邊)的粗細
# 顯示影象
cv2.imshow(window_name, frame)
c = cv2.waitkey(10)
if c & 0xff == ord('q'): #按"q"退出
break
# 釋放攝像頭並銷毀所有視窗
cap.release()
cv2.destroyallwindows()
if __name__ == '__main__': #make a script both importable and executable讓你寫的指令碼模組既可以匯入到別的模組中用,另外該模組自己也可執行,注意前後各有有兩個下劃線
catchusbvideo("facerect", 0)
執行結果截圖。嗯...攝像頭畫素有點低,而且還不會聚焦...凑活看吧,籃框是識別的,綠框是攝像頭識別的
我試了半天.mp4不知道怎麼上傳
這個簡單的人臉識別只適用於正臉清晰的
Python應用一 haar人臉檢測
使用國內源來安裝速度更快,參考教程 知乎教程安裝完畢之後,先測試一下opencv是否可以使用,所以可以先輸入一些簡單的 來測試一下。import cv2 開啟專案資料夾下面的photo子資料夾下的檔案 img cv2.imread r photo lena.png cv2.imshow lena i...
js簡單應用2
1 資料型別的強制轉換 js中提供了兩個函式可以把字串強制轉成數 parseint parsefloat 如果我把 123 當做字串.案例如下 讓使用者輸入兩個數,並計算和.var num1 window.prompt 請輸入乙個數 var num2 window.prompt 請輸第二個數 var...
Haar類特徵及其在視覺跟蹤中的應用
看haar類特徵時間比較久了,一直搞不清楚它的定義以及它在visual tracking 中的應用,今天總算有點感覺。同時也意識到,必須對自己的體會和理解做乙個簡單的整理。每個haar類特徵分類器是由乙個矩特徵 閾值及標誌不等號方向的數組成。其中特徵不僅與矩形的尺度有關,還與矩形所處的位置有關。覺得...