python人臉識別防小偷 Python人臉識別

2021-10-11 12:51:35 字數 2813 閱讀 6134

今天來分享一下關於python膨脹和腐蝕、人臉識別以及動態人臉識別的**~~~開心呢,本菜鳥當時可是沉浸在cv2庫中久久不能自拔了好久的呢~~希望你也能享受python帶來的小驚喜喲。。

0x 00 python膨脹與腐蝕

影象的膨脹和腐蝕主要是尋找影象中的極大和極小區域。**中的結構元素是指:設有兩幅圖象b,x。若x是被處理的物件,而b是用來處理x的,則稱b為結構元素(structure element),又被形象地稱做刷子。結構元素通常都是一些比較小的圖象。詳細的一些原理概念見文末鏈結啦~~

"""膨脹與腐蝕"""

import cv2

#讀取:cv2.imread(路徑,num)

#構造乙個3*3的結構元素

elment = cv2.getstructuringelement(cv2.morph_rect,(3,3))

#膨脹影象cv2.dilate(影象,元素結構)

dilate = cv2.dilate(img,elment)

#腐蝕影象cv2.erode(影象,元素結構)

erode = cv2.erode(img,elment)

#將兩幅影象相減獲得邊,第乙個引數是膨脹後的影象,第二個引數是腐蝕後的影象

result = cv2.absdiff(dilate,erode)

#閾值型別:'term_criteria_count', 'term_criteria_eps', 'term_criteria_max_iter',

# 'thresh_binary', 'thresh_binary_inv', 'thresh_mask', 'thresh_otsu',

# 'thresh_tozero_inv', 'thresh_********', 'thresh_trunc'

retval,result = cv2.threshold(result,50,255,cv2.thresh_binary);

#反色,即對二值影象每個畫素取反

result = cv2.bitwise_not(result);

#顯示影象

cv2.imshow('origin',img)

#原圖cv2.imshow('result',result)

#邊緣檢測圖

cv2.waitkey(0)

cv2.destroyallwindows()

0x01 人臉識別

灰度化、幾何變換、影象增強、歸一化

特徵點定位、人臉對齊、抓取人臉特徵"""人臉檢測"""

import  cv2

#呼叫人臉檢測特徵庫

face = cv2.cascadeclassifier('haarcascade_frontalface_alt2.xml')

#讀取影象檔案

#人臉檢測

faces = face.detectmultiscale(sample_imag,scalefactor=1.1,minneig hbors=5,minsize=(10,10))

#畫框處理

for (x,y,w,h) in faces:

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

#結果寫入影象

#新建視窗顯示影象

cv2.namedwindow("image")

cv2.imshow("image",sample_imag)

cv2.waitkey(0)

cv2.destroyallwindows()

展示一下識別我詹皇:帥

還有識別勇士的時候:(不會吧不會吧,竟然沒識別到~~我去學習訓庫了)

0x02 動態人臉識別

動態人臉識別是不需要停駐等待,你只要出現在一定識別範圍內,無論你是行走還是停立,系統就會自動進行識別,也就是說,人以自然的形態走過去,攝像頭會進行資訊的抓拍和採集,發出相應的指令,進行動態人臉識別。

首要是依據人臉器官的形狀描繪以及他們之間的間隔特性來獲得有助於人臉分類的特徵資料,其特徵重量一般包含特徵點間的歐氏間隔、曲率和視點等。

import cv2

# 1.使用opencv的分類器

# 2.從攝像頭或本地中讀取**

# 3.在上換框

# 4.在新視窗上展示

# 1.使用opencv的分類器/特徵庫

detector = cv2.cascadeclassifier('haarcascade_frontalface_alt2.xml')

# 2.從攝像頭或本地中讀取**

cap = cv2.videocapture(0)

while true:

ret,img = cap.read()

faces = detector.detectmultiscale(img,1.3,5)

# 3.在上換框

for (x,y,w,h) in faces:

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

cv2.imshow('frame',img)

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

break

# 4.在新視窗上展示

cap.release()

cv2.destroyallwindows()

0x03 原理詳解參考

0x04 小結

python人臉識別

talk is cheap,show you the code 參考自 這裡 無注釋版 注釋版 coding utf 8 import cv2 這裡的 cascadeclassifier 是 層級分類器 的意思。為什麼要 分層 呢?剛才提到在進行機器分析 時,其實是對整個從上到下,從左到右,乙個畫素...

python人臉識別

from numpy import 引入科學計算庫 import cv2 引入opencv庫 face cascade cv2.cascadeclassifier haarcascade frontalface alt.xml 載入haar特徵級聯表 img cv2.imread my.jpg 讀取...

python之人臉識別

執行準備 所需檔案 haarcascade frontalface default.xml 獲取方式 1.開啟cmd,輸入指令 pip install i cv2 2.在安裝python的目錄下面,依次開啟資料夾 lib site packages cv2 data 所需檔案就在裡面了 1.導入庫 ...