Python基於OpenCV的人臉檢測並儲存

2021-08-28 05:16:08 字數 2207 閱讀 9025

import cv2
cv2.cascadeclassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
#-*- coding: utf-8 -*-

# import opencv的庫

import cv2

import os, math, operator

from pil import image

from functools import

reduce

###呼叫電腦攝像頭檢測人臉並截圖

defcatchpicfromvideo

(window_name, path_name)

: cv2.namedwindow(window_name)

#電腦攝像頭

cap = cv2.videocapture(0)

#告訴opencv使用人臉識別分類器

classfier = cv2.cascadeclassifier(cv2.data.haarcascades +

"haarcascade_frontalface_default.xml"

)#檢測人臉後要畫的邊框的顏色

color =(0

,255,0

)while cap.isopened():

ok, frame = cap.read(

)#讀取一幀資料

ifnot ok:

break

grey = cv2.cvtcolor(frame, cv2.color_bgr2gray)

#將當前楨影象轉換成灰度影象

#人臉檢測,1.2和2分別為縮放比例和需要檢測的有效點數

facerects = classfier.detectmultiscale(grey, scalefactor =

1.2, minneighbors =

3, minsize =(32

,32))

iflen

(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,2)

k = cv2.waitkey(

100)

#每0.1秒讀一次鍵盤

if k ==

ord(

"z")

or k ==

ord(

"z")

:#如果輸入z

#將當前幀儲存為

img_name = path_name

print

(img_name)

image = frame[y -

10: y + h +

10, x -

10: x + w +10]

cv2.imwrite(img_name, image,

[int

(cv2.imwrite_png_compression),9

])break

#顯示影象

cv2.imshow(window_name, frame)

#退出攝像頭介面

c = cv2.waitkey(

100)

if c ==

ord(

"q")

or c ==

ord(

"q")

:break

#釋放攝像頭並銷毀所有視窗

cap.release(

) cv2.destroyallwindows(

)os.system(

"cls"

)#清屏

#預存的人臉檔案

catchpicfromvideo(

"get face"

,recogname)

雖然能框住人臉,但是效率還不是很高。

按z或z可以將框住的人臉擷取儲存

基於python的opencv教程

第一次寫部落格,學習是要有輸入與輸出的,所謂教學相長。所以我想試著自己寫乙份教程,算是對自己的學習總結吧,部落格的排版比較直男,請湊合看吧。首先建議的ide是pycharm,opencv的庫直接pip安裝就好,最好大家有一定的python基礎。第一部分是關於圖象讀取和儲存。import cv2imp...

基於python的opencv學習

dst cv2.sobel src,ddept,dx,dy,ksize ddepth 影象的深度,一般設為 1ksize sobel運算元的大小 白到黑是正數,黑到白是負數,所有的負數都會被截斷為0,因此要使用convertscaleabs取絕對值2 拉普拉斯金字塔 1 低通濾波 2 縮小尺寸pyr...

基於Python的OpenCV人臉檢測

注意 本文只是人臉檢測,人臉識別的實現請參見本人另一篇部落格 基於opencv tensorflow keras實現人臉識別 提前做的準備 1 和說明 import cv2 as cv import numpy as np defface detect demo 人臉檢測函式 gray cv.cvt...