ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-03-30 21:01:12  阅读:249  来源: 互联网

标签:Python image opencv 人脸 图像 detector cv 摄像头


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

标签:Python,image,opencv,人脸,图像,detector,cv,摄像头
来源: https://blog.csdn.net/Expert_of_signal/article/details/115334824

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有