人脸框选多种算法的实现
由于笔者刚刚开始相关的知识的学习,在这里打算做个学过东西的一个详细的记录,当作课后的复习,内容比较比较详细,方便大家一起学习和讨论。
本人能力有限,欢迎大佬指正错误、提出建议。
先介绍第一种算法——haar
haar是一种很早的传统的人脸识别的算法,具体原理可以看一下大佬的文章。大佬的一个haar算法的介绍
其说说白了,Haar主要根据人脸特征如眉毛,鼻子等的灰度图的变换进行识别人脸的。
haar用法:主要在于要加载一个haar相关的xml文件,可以在GitHub上面下载下载地址;
1.创造一个探测器
2.调用创建的探测器去探测到图片人脸的信息
3.根据探测到的信息去框选出人脸。
下面我将基于haar算法做一个视频的人脸识别。
整个代码是比较简单的。
思路为:
构造haar人脸检测器
获取视频流
检测每一帧画面
画人脸框并显示
#这里首先介绍一下视频流的一个处理
import cv2cap = cv2.VideoCapture(0)while True:ret,frame = cap.read()frame = picture_processing(frame)cv2.imshow('demo',frame)if cv2.waitKey(10) & 0xFF == 27:breakcap.release()
cv2.destroyAllWindows()
基于这个视频流,再进行人脸的检测
人脸检测器的构造
face_detector = cv2.CascadeClassifier(r"D:\Python\3\face_detection\cascades\haarcascade_frontalface_default.xml")
然后根据人脸检测器就可以进行特征提取和rectangle的绘制了。
整体的代码如下:
import cv2def picture_processing(img):img = cv2.flip( img ,1)return imgface_detector = cv2.CascadeClassifier(r"D:\Python\3\face_detection\cascades\haarcascade_frontalface_default.xml")cap = cv2.VideoCapture(0)while True:ret,frame = cap.read()frame = picture_processing(frame)frame_gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)detections = face_detector.detectMultiScale( frame_gray, minNeighbors=7 )for (x, y, w, h) in detections:cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),5)cv2.imshow('demo',frame)if cv2.waitKey(10) & 0xFF == 27:breakcap.release()
cv2.destroyAllWindows()
后面介绍第二种方法——hog
hog和上述的haar调用方式方法是很像的,二者在精度和速度上面是有差别。
注意:hog探测器的创建时调用dlib这个包,而不用直接下载,所以我用的更多的还是hog。
由于和上面的方法很像,就不详细的讲解了,直接放源码:
import dlib
import cv2def picture_processing(img):img = cv2.flip( img ,1)return img# 构造HOG人脸检测器
hog_face_detetor = dlib.get_frontal_face_detector()cap = cv2.VideoCapture(0)while True:ret,frame = cap.read()frame = picture_processing(frame)frame_gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)# 输入检测的图片获得检测的人脸信息detections = hog_face_detetor( frame_gray, 1 )#根据检测到的人脸信息框选for face in detections:x = face.left()y = face.top()r = face.right()b = face.bottom()cv2.rectangle( frame_gray, (x, y), (r, b), (0, 255, 0), 5 )cv2.imshow('demo',frame)if cv2.waitKey(10) & 0xFF == 27:breakcap.release()
cv2.destroyAllWindows()
人脸框选多种算法的实现相关推荐
- 【优秀课设】基于OpenCV的Python人脸识别、检测、框选(遍历目录下所有照片依次识别 视频随时标注)
基于OpenCV的Python人脸识别.检测.框选 (遍历目录下所有照片依次识别 视频随时标注) 移步: https://blog.csdn.net/weixin_53403301/article/d ...
- matlab算概率,用matlab计算概率,再次吐槽某些吧友国战比赛七框选将的建议
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 国战比赛讲求观赏性,一国独大根本谈不上观赏性.大魏国的出现,和选将框的多少有非常直接关系.我发现吧里不少高等级玩家建议国战比赛七框选将,我很不赞同,这就是 ...
- 游戏中常用的寻路算法的分享(3):A*算法的实现
概述 剥除代码,A* 算法非常简单.算法维护两个集合:OPEN 集和 CLOSED 集.OPEN 集包含待检测节点.初始状态,OPEN集仅包含一个元素:开始位置.CLOSED集包含已检测节点.初始状态 ...
- 关于寻路算法的一些思考(3):A*算法的实现
概述 剥除代码,A* 算法非常简单.算法维护两个集合:OPEN 集和 CLOSED 集.OPEN 集包含待检测节点.初始状态,OPEN集仅包含一个元素:开始位置.CLOSED集包含已检测节点.初始状态 ...
- 查找算法的实现c语言,查找算法的实现(C语言版)
<查找算法的实现(C语言版)>由会员分享,可在线阅读,更多相关<查找算法的实现(C语言版)(6页珍藏版)>请在人人文库网上搜索. 1.芬梨受交峙东喊济雏狈违晕裂赵檀芬逛温乌摄阿 ...
- 基于MATLAB的图像压缩感知 算法的实现
摘要 获取项目源文件,联系Q:1415736481,可指导毕设,课设 数据压缩技术是提高无线数据传输速度的有效措施之一.传统的数据压缩技术是基于奈奎斯特采样定律进行采样,并根据数据本身的特性降低其冗余 ...
- python边缘检测代码_python Canny边缘检测算法的实现
图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用.在空域运算中来说,对图像的锐化就是计算微分.对于数字图像的离散信号, ...
- 干货回顾丨TensorFlow四种Cross Entropy算法的实现和应用
交叉熵介绍 交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小,常见的Loss函数就是均方平方差(Mean Squared Er ...
- Bug2算法的实现(RobotBASIC环境中仿真)
移动机器人智能的一个重要标志就是自主导航,而实现机器人自主导航有个基本要求--避障.之前简单介绍过Bug避障算法,但仅仅了解大致理论而不亲自动手实现一遍很难有深刻的印象,只能说似懂非懂.我不是天才,不 ...
最新文章
- ASP网络编程从入门到精通 下载
- pandas DataFrame 写入excel是列表 读取变字符串的解决办法
- POJ 3259 Wormholes(负权环路)
- WebFlux基础之响应式编程
- javascript学习总结1
- 使用代理下载android系统源码和SDK
- 汇编语言-008(条件跳转应用 、loopnz 条件循环指令使用 、loopz 条件循环指令使用 、 if语句编写汇编时 、while语句编写汇编时 、循环内的if语句嵌套)
- xStream:Security framework of XStream not initialized, XStream is probably vulnerable.
- Tosca 添加 modules,添加Library,引用重复步骤
- linux块设备驱动简述(Linux驱动开发篇)
- Modown v7.3无限制版+ Erphpdown12.3插件 + 工单系统
- 根据卫星星历在cesium画卫星轨迹
- python做物联网控制_一步步搭建物联网系统——简单物联网
- Codeforces1457 C. Bouncing Ball(思维+dp)
- 铁流:苹果为何不找IBM,而选择中国浪潮
- 2021年中国纺织钩环市场趋势报告、技术动态创新及2027年市场预测
- OCJP 考试题之八
- 3、Kubernetes的基本使用
- 第一课c语言课前准备
- 无与伦比的工业设计 iPhone 4详细评测