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...