【opencv】人脸检测(图片&实时) 您所在的位置:网站首页 人脸鱼图片大全 【opencv】人脸检测(图片&实时)

【opencv】人脸检测(图片&实时)

2023-05-29 16:47| 来源: 网络整理| 查看: 265

■ 人脸检测(图片)

原图像: 在这里插入图片描述         在使用OpenCV的人脸检测之前,需要一个人脸训练模型,格式是xml的,我们这里使用OpenCV提供好的人脸分类模型xml,下载地址:https://github.com/opencv/opencv/tree/master/data/haarcascades, 可全部下载到本地。

代码:

import cv2 # 读取图片 img = cv2.imread("image.jpg") # 导入人脸级联分类器引擎,‘xml’文件中包含训练出来的人脸特征 face_engine = cv2.CascadeClassifier("opencv-master\data\haarcascades\haarcascade_frontalface_default.xml") # 转为灰度图,加快检测速度 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 用人脸级联分类器引擎进行人脸识别,返回的faces为人脸坐标列表,1.3是放大比例,5是重复次数(越大精确度越高) faces = face_engine.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5, minSize=(32, 32)) # 大于0则检测到人脸 if len(faces): # 循环每一张人脸 for face in faces: # (x,y)是左下角坐标,w和h是宽和高 x, y, w, h = face # 画出人脸框,绿色(BGR色彩体系),画笔宽度为2 cv2.rectangle(img, (x, y), (x + h, y + w), (0,255,0), 2) # 在"image"窗口中展示效果图 cv2.imshow("image", img) # 监听键盘上的任何按键,如有按键即退出并关闭窗口 cv2.waitKey(0) cv2.destroyAllWindows() # 将图片保存为output.jpg cv2.imwrite("output.jpg", img)

输出图像: 在这里插入图片描述

■ 实时人脸检测(调用摄像头)

代码:

import cv2 # 获取摄像头 cap = cv2.VideoCapture() # 打开cap,传入0表示获取系统默认摄像头 cap.open(0) # 导入人脸级联分类器引擎,‘xml’文件中包含训练出来的人脸特征 face_engine = cv2.CascadeClassifier("opencv-master\data\haarcascades\haarcascade_frontalface_default.xml") while cap.isOpened(): # 获取摄像头拍摄到的画面 # cap.read()返回两个参数。flag:值为true或false,表示获取画面成功或失败, frame:获取到的画面是三维数组 flag, frame = cap.read() # 用人脸级联分类器引擎进行人脸识别,返回的faces为人脸坐标列表,1.3是放大比例,5是重复次数(越大精确度越高) faces = face_engine.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32)) for face in faces: x,y,w,h = face # 画出人脸框,绿色(BGR色彩体系),画笔宽度为2 frame = cv2.rectangle(frame, (x,y), (x+w,y+h), (0,255,0), 2) # 实时展示效果画面 cv2.imshow("my_window", frame) # 每5毫秒监听一次键盘动作,按q键结束 if cv2.waitKey(5) & 0xFF == ord("q"): break # 关闭摄像头 cap.release() # 关闭所有窗口 cv2.destroyAllWindows()

– 以上代码可复制粘贴直接运行。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有