python opencv 實現人臉檢測

2021-08-08 16:42:47 字數 2277 閱讀 2882

可以用opencv 的庫函式來實現人臉檢測

#coding=utf-8

import numpy as np

import cv2

import time

import sys, getopt

from video import create_capture

from common import clock, draw_str

def detect(img , cascade):#檢測函式

rects = cascade.detectmultiscale(img, scalefactor=1.3, minneighbors=4, minsize=(30, 30),

flags=cv2.cascade_scale_image)

if len(rects) == 0:

return

rects[:,2:] += rects[:,:2]

return rects

def draw_rects(img, rects, color):#畫框函式

for x1, y1, x2, y2 in rects:

cv2.rectangle(img, (x1, y1), (x2, y2), color, 2)

if __name__ == '__main__':#主函式

args = {}

#讀入分類器

cascade_fn = args.get('--cascade', "haarcascade_frontalface_alt.xml")

# cascade_fn = args.get('--cascade', "haarcascade_righteye_2splits.xml")#yanjing

# cascade_fn = args.get('--cascade', "haarcascade_fullbody.xml")

eyes = args.get('--eyesed-cascade', "haarcascade_eye.xml")

cascade = cv2.cascadeclassifier(cascade_fn)

eyesed = cv2.cascadeclassifier(eyes)

print cascade_fn

cap = cv2.videocapture(0)

while true:

#延時time.sleep(0.10)

ret,img = cap.read()#讀入每一幀影象

gray = cv2.cvtcolor(img, cv2.color_bgr2gray)#灰度化

t = clock()#計時

rects = detect(gray, cascade)#檢測人臉

vis = img.copy()

draw_rects(vis, rects, (0, 255, 0))

# if not eyesed.empty():

# for x1, y1, x2, y2 in rects:

# roi = gray[y1:y2, x1:x2]

# vis_roi = vis[y1:y2 , x1:x2]

# subrects = detect(roi.copy(), eyesed)

# draw_rects(vis_roi, subrects, (255, 0, 0))

subrects = detect(gray, eyesed)

draw_rects(vis, subrects, (255, 0, 0))

dt = clock() - t

# print dt

draw_str(vis, (20, 20), 'time: %.1f ms' % (dt*1000))

cv2.imshow('facedetect', vis)

if cv2.waitkey(5) == 27:

break

cv2.destroyallwindows()

下面是效果圖:
圖刪了。。

一共三個函式:detect函式 、draw_rects函式、main函式

python opencv實現掩膜

import ssl import urllib.request import cv2 import numpy as np 獲得def getpic name,url name 位址 url 名字 自定義 解決ssl驗證 請求 resp urllib.request.urlopen url ima...

python opencv實現抖動演算法

簡單說就是犧牲解析度來提高顏色數量。通過黑點的疏密程度來進行灰度的顯示。例如墨水螢幕只能顯示黑白,那麼我們可以取樣一部分區域矩,例如2x2的乙個矩陣,來顯示5個級別的灰度,用4個畫素當成乙個畫素來看,就會有5個級別的灰度。通過這種方法就可以犧牲掉一半的解析度 其實是1 4 來顯示出5個級別的灰度,當...

python OpenCV實現動態物體追蹤

一 安裝opencv 就踩到了很多坑 從以下部落格中獲得了很多幫助 安就安了一晚上。兩個小時還沒裝好。壯士 第二天關機再開發現就可以了 可能配置環境需要重啟電腦 二 需求分析 然後就來找我 感覺挺有意思的 以前也聽說過opencv 沒用過 遂接受 0.0反正寫出來了他也不會發現我是乙個弱雞hhh 最...