# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import numpy as np
import cv2 as cv
# 创建哈尔级联分类器
fd = cv.CascadeClassifier('../../data/haar/face.xml')
ed = cv.CascadeClassifier('../../data/haar/eye.xml')
nd = cv.CascadeClassifier('../../data/haar/nose.xml')
# 打开第0号视频捕捉设备
vc = cv.VideoCapture(1)
while True:
# 读取视频帧图像
frame = vc.read()[1]
# 人脸定位
faces = fd.detectMultiScale(frame, 1.3, 5)
for l, t, w, h in faces:
a, b = int(w / 2), int(h / 2)
cv.ellipse(frame, (l + a, t + b), (a, b), 0,
0, 360, (255, 0, 255), 2)
face = frame[t:t + h, l:l + w]
eyes = ed.detectMultiScale(face, 1.3, 5)
for l, t, w, h in eyes:
a, b = int(w / 2), int(h / 2)
cv.ellipse(face, (l + a, t + b), (a, b), 0,
0, 360, (0, 255, 0), 2)
noses = nd.detectMultiScale(face, 1.3, 5)
for l, t, w, h in noses:
a, b = int(w / 2), int(h / 2)
cv.ellipse(face, (l + a, t + b), (a, b), 0,
0, 360, (255, 0, 0), 2)
# 显示视频帧图像
cv.imshow('VideoCapture', frame)
# 等待33毫秒,如果期间按ESC键则返回27,退出循环
if cv.waitKey(33) == 27:
break
# 关闭视频捕捉设备
vc.release()
# 关闭所有缓存窗口
cv.destroyAllWindows()
OpenCV7:面部定位
最新推荐文章于 2024-08-02 17:26:38 发布