資源簡介
基于Python和Opencv實現檢測人臉,并將人臉保存下來,支持設置保存圖片數目
代碼片段和文件信息
#?-*-coding:utf-8?-*-??
__author__?=?“ZJL“
?
import?cv2
import?time
import?os
?
?
#?保存截圖
save_path?=?‘D:\\DeepLearning\\img\\‘
?
#?定義攝像頭對象,其參數0表示第一個攝像頭
camera?=?cv2.VideoCapture(0)
?
#?判斷視頻是否打開
if?(camera.isOpened()):
????print(‘Open‘)
else:
????print(‘攝像頭未打開‘)
?
#?測試用查看視頻size
size?=?(int(camera.get(cv2.CAP_PROP_frame_WIDTH))
????????int(camera.get(cv2.CAP_PROP_frame_HEIGHT)))
print(‘size:‘+repr(size))
?
#?幀率
fps?=?5
#?總是取前一幀做為背景(不用考慮環境影響)
pre_frame?=?None
while(1):
????start?=?time.time()
????#?讀取視頻流
????ret?frame?=?camera.read()
????#?轉灰度圖
????gray_lwpCV?=?cv2.cvtColor(frame?cv2.COLOR_BGR2GRAY)
?
????if?not?ret:
????????break
????end?=?time.time()
?
????#?顯示圖像
????cv2.imshow(“capture“?frame)
?
????#?運動檢測部分
????seconds?=?end?-?start
????if?seconds?1.0?/?fps:
????????time.sleep(1.0?/?fps?-?seconds)
????gray_lwpCV?=?cv2.resize(gray_lwpCV?(500?500))
????#?用高斯濾波進行模糊處理
????gray_lwpCV?=?cv2.GaussianBlur(gray_lwpCV?(21?21)?0)
?
????#?如果沒有背景圖像就將當前幀當作背景圖片
????if?pre_frame?is?None:
????????pre_frame?=?gray_lwpCV
????else:
????????#?absdiff把兩幅圖的差的絕對值輸出到另一幅圖上面來
????????img_delta?=?cv2.absdiff(pre_frame?gray_lwpCV)
????????#threshold閾值函數(原圖像應該是灰度圖對像素值進行分類的閾值當像素值高于(有時是小于)閾值時應該被賦予的新的像素值閾值方法)
????????thresh?=?cv2.threshold(img_delta?25?255?cv2.THRESH_BINARY)[1]
????????#?膨脹圖像
????????thresh?=?cv2.dilate(thresh?None?iterations=2)
????????#?findContours檢測物體輪廓(尋找輪廓的圖像輪廓的檢索模式輪廓的近似辦法)
????????image?contours?hierarchy?=?cv2.findContours(thresh.copy()?cv2.RETR_
評論
共有 條評論