微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python调用电脑摄像头实现人脸检测

Python调用电脑摄像头实现人脸检测

Python调用opencv库

OpenCV用 C++语言编写, 它的主要接口也是 C++语言, 但是依然保留了大量的 C 语言接口。 该库也有大量的 Python、 Java and MATLAB/OCTAVE(版本 2.5) 的接口。

基本步骤

1.打开摄像头
2.读取摄像头所拍摄的每一帧图像
3.显示每一帧图像
4.对读取到的每一帧图像调用人脸检测函数
–4.1对图像进行灰度转换
–4.2加载opencv的人脸特征库
–4.3调用opencv内置检测函数检测图像
–4.4在图像上用框或圈标识出检测到的特征
–4.5显示出每一帧被标识过的图像

代码

// camera_face_detect
import cv2 as cv


def face_detect_demo(image):
	# 灰度转换
    gray_image = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    # 加载库特征
    face_detector = cv.CascadeClassifier(
        "D:/Software/opencv/opencv/sources/data/haarcascades"
        "/haarcascade_frontalface_default.xml")
    left_eye_detector = cv.CascadeClassifier(
        "D:/Software/opencv/opencv/sources/data/haarcascades"
        "/haarcascade_lefteye_2splits.xml")
    right_eye_detector = cv.CascadeClassifier(
        "D:/Software/opencv/opencv/sources/data/haarcascades"
        "/haarcascade_lefteye_2splits.xml")
    # 调用内置检测函数
    faces = face_detector.detectMultiScale(gray_image)
    left_eyes = left_eye_detector.detectMultiScale(gray_image)
    right_eyes = right_eye_detector.detectMultiScale(gray_image)
    # 在图像上用框、圈标记
    for x,y,w,h in faces:
        cv.rectangle(image, (x,y),(x+w,y+h), color=(0,0,255), thickness=2)
    for x2,y2,w2,h2 in left_eyes:
        cv.rectangle(image, (x2,y2),(x2+w2,y2+h2), color=(0,255,0), thickness=2)
    for x3,y3,w3,h3 in right_eyes:
        cv.rectangle(image, (x3,y3),(x3+w3,y3+h3), color=(0,255,0), thickness=2)
    # 显示标记后的图像
    cv.imshow('result',image)


# 参数为0表示打开笔记本内置摄像头
# cv.CAP_DSHOW不加的话会有内存释放的报错
cap = cv.VideoCapture(0, cv.CAP_DSHOW)
while True:
    flag, imag = cap.read()
    if not flag:
        break
    cv.imshow('window', imag)
    if ord('q') == cv.waitKey(10):
        break
    # 检测摄像头识别到的人脸
    face_detect_demo(imag)


cv.destroyAllWindows()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐