网站上的图片一般多大合适,wordpress 提速,昌邑市住房和建设局网站,西安网站群公司目录
前言
一、人脸检测的原理
1.特征提取
2.分类器
二、代码实现
1.图片预处理
2.加载分类器
3.进行人脸识别
4.标注人脸及显示
三、微笑检测 前言 人脸检测是计算机视觉中的一个重要任务#xff0c;旨在自动识别图像或视频中的人脸。它可以用于多种应用#xff0…目录
前言
一、人脸检测的原理
1.特征提取
2.分类器
二、代码实现
1.图片预处理
2.加载分类器
3.进行人脸识别
4.标注人脸及显示
三、微笑检测 前言 人脸检测是计算机视觉中的一个重要任务旨在自动识别图像或视频中的人脸。它可以用于多种应用如安全监控、身份验证、人机交互等。 一、人脸检测的原理
1.特征提取 Haar特征 基于Haar小波变换通过简单的矩形特征如眼睛、鼻子、嘴巴的对比来识别图像中的人脸。Haar特征计算速度快适合实时应用。 2.分类器 这里使用的是python自带的库的分类器模型是一种级联分类器
分类器需要对图像的多个特征进行识别。
例如在识别一个动物是狗(正类)还是其他动物(负类)时直接根据多个条件进行判断流程是非常烦琐的。如果先判断该动物有几条腿。有四条腿的动物被判断为可能为狗并对此范围内的对象继续进行分析和判断。没有四条腿的动物直接被否决即不可能是狗。只通过比较腿的数目就能排除样本集中大量的负类(如鸡、鸭、鹅等不是狗的动物的实例)。级联分类器就是基于这种思路将多个简单的分类器按照一定的顺序级联而成的。 二、代码实现
1.图片预处理
import cv2image cv2.imread(quanjiafu2.jpg)
image cv2.resize(image, None, fx0.4, fy0.4)
gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 2.加载分类器
-----------------加载分类器----------------
faceCascade cv2.CascadeClassifier(haarcascade_frontalface_default.xml) 3.进行人脸识别
------------------- 分类器检测实现人脸识别--------------
# objects cv2.CascadeClassifier,detectMultiscale( imagel, scaleFactor[,minNeighbors[,flags[,minsize[, maxsize]]]]])
# 其中各个参数及返回值的含义如下:
# image:待检测图像通常为灰度图像。
# scaleFactor:表示在前后两次相继扫描中搜索窗口的缩放比例。识别扫描按照不同比例来进行扫描
# minNeighbors:表示构成检测目标的相邻矩形的最小个数。在默认情况下该参数的值为 3,
# 表示有 3 个以上的检测标记存在时才认为存在人脸。如果希望提高检测的准确率可以将该参数的值设置得更大。
# 但这样做可能会让一些人脸无法被检测到。
# flags: 该参数通常被省略。在使用低版本 OpencV(opencV 1.X 版本)时该参数可能会被设置为
# CV_HAAR_DO_CANNY_PRUNING表示使用 Canny 边缘检测器拒绝一些区域。
# minSize:目标的最小尺寸小于这个尺寸的目标将被忽略。
# maxSize: 目标的最大尺寸大于这个尺寸的目标将被忽略。通常情况下将该可选参数省略即可
# 若 maxsize 和 minsize 大小一致则表示仅在一个尺度上食找目标。
# objects: 返回值. 目标对象的矩形框向量组。该值是一组矩形信息.
# 包含每个检测到的人脸对应的矩形框的信息(x轴方向位置、y轴方向位置、宽度、高度)faces faceCascade.detectMultiScale(gray, scaleFactor1.05, minNeighbors5, minSize(8, 8))
print(发现{0}张人脸!.format(len(faces)))
print(其位置分别是:, faces) 4.标注人脸及显示
---------------标注人脸及显示------------------
for (x, y, w, h) in faces:cv2.rectangle(image, (x, y), (x w, y h), (0, 255, 0), 2)
cv2.imshow(result, image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出 三、微笑检测
微笑检测是在人脸检测的基础上进行的 加载微笑检测分类器打开摄像头检测一帧图片进行人脸检测提取出每张人脸所在的矩形区域对该矩形区域进行微笑检测微笑时在矩形框的左上角表上smile按下esc结束
import cv2faceCascade cv2.CascadeClassifier(haarcascade_frontalface_default.xml)
smile cv2.CascadeClassifier(haarcascade_smile.xml)cap cv2.VideoCapture(0)
while True:ret, frame cap.read()frame cv2.flip(frame, 1) # 图片翻转 水平翻转if not ret:breakgray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)faces faceCascade.detectMultiScale(gray, scaleFactor1.1, minNeighbors10, minSize(5, 5))--------处理每张人脸-------for (x, y, w, h) in faces:cv2.rectangle(frame, (x, y), (x w, y h), (0, 255, 0), 2)# 提取人脸所在区域 多通道形式# roiColorFace frame[y:yh,x:xw]# 单通道形式roi_gray_face gray[y:y h, x:x w]# 微笑检测smiles smile.detectMultiScale(roi_gray_face, scaleFactor1.5, minNeighbors10, minSize(50, 50))for (sx, sy, sw, sh) in smiles:cv2.putText(frame, smile, (x, y), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 255, 255), 2)cv2.imshow(result, frame)a cv2.waitKey(100)if a 27:breakprint(frame.shape)
# 释放摄像头赟源
cap.release()
# 关闭所有openCV创建的窗口
cv2.destroyAllWindows()