热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

本文_基于Python+OpenCV的人脸检测,使用任意外置摄像头或者电脑自带摄像头(附可用源码)

篇首语:本文由编程笔记#小编为大家整理,主要介绍了基于Python+OpenCV的人脸检测,使用任意外置摄像头或者电脑自带摄像头(附可用源码)相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了基于Python+OpenCV的人脸检测,使用任意外置摄像头或者电脑自带摄像头(附可用源码)相关的知识,希望对你有一定的参考价值。



一.本文概述:

1.使用电脑自带摄像头或者外置摄像头进行人脸检测和框选


2.也可用于检测实时视频中的人脸


二.准备工作:

1.装有pycharm,并且下载安装好OpenCV库


2.本次是用的HAAR级联分类器,所以还需要下载haarcascades特征集,一般下载完OpenCV库后,文件中会包含有haarcascades文件,一般存在于目录\\opencv\\sources\\data\\haarcascades\\


3.如果在OpenCV文件包种没有找到,可以直接在下发链接中下载保存好

https://pan.baidu.com/s/1_lzDeKbVyeSOMQ_zBFcf2Q?pwd=1235


三.开始演示:

1.代码和说明

import cv2
import numpy as np
if __name__ == '__main__':
# 外置摄像头
# cap = cv2.VideoCapture(1, cv2.CAP_DSHOW)
# 使用电脑自带摄像头
cap = cv2.VideoCapture(0)
# img = cv2.imread()
# face_detector = cv2.CascadeClassifier('/.haarcascade_frontalcatface.xml')
# 加载分类器进行检测
face_detector = cv2.CascadeClassifier(r'E:\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalcatface.xml') # 检测
# face = face_detector.detectMultiScale(img) # 坐标x,y,w,h
# print(face)
while True:
flag, frame = cap.read() # 检测读取
if not flag:
break
gray = cv2.cvtColor(frame, code=cv2.COLOR_BGRA2GRAY)
# 转化为灰度进行检测 ,检测效果可调下方参数
face = face_detector.detectMultiScale(gray, scaleFactor=1.05, minNeighbors=8)
data = face_detector.detectMultiScale(frame)
for x, y, w, h in face:
cv2.rectangle(frame, pt1=(x, y),
pt2=(x + w, y + h),
color=[0, 0, 255], # 框选的颜色RGB可自调,不会可以百度搜索
thickness=2) # 线框的粗度
# 打印人脸位置坐标
print(data)
cv2.imshow('face', frame)
key = cv2.waitKey(1000//24) # 整除
# 键盘输入a退出
if key == ord('a'):
break
cv2.destroyAllWindows()
cap.release()
# for x, y, w, h in face:
# cv2.rectangle(img, pt1=(x, y),
# pt2=(x + w, y + h),
# color=[0, 0, 255],
# thickness=2)
# cv2.imshow()
# cv2.waitKey(0)
# cv2.destroyAllWindows()

2.代码注意部分:
​编辑


1.文件路径得指定对,最好不要包括中文路径


2.haarcascades分类器文件中已经包含了我们人脸检测需要的一些特征集,直接使用即可达到我们需要的人脸检测效果


四.完成以上步骤之后在pycharm上运行即可

摄像头最准你的脸,然后就能自动框出来了


以下是我接了外部的小摄像头做的检测效果,整体还是非常不错的 :



以上就是Python+OpenCV+Haar人脸检测的所有内容,希望能帮到大家


推荐阅读
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了如何在方法参数中指定一个对象的协议,以及如何调用符合该协议的方法。以一个具体的示例说明了如何在方法参数中指定一个UIView子类对象,并且该对象需要符合PixelUI协议,同时方法需要能够访问该对象的属性。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • 本文介绍了在Python中使用getpass模块隐藏密码输入的方法,以保护用户的密码不被其他人员看到。同时还提到了在PyCharm中运行该命令无效的问题,需要在terminal中运行。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  • 本文介绍了一种求解最小权匹配问题的方法,使用了拆点和KM算法。通过将机器拆成多个点,表示加工的顺序,然后使用KM算法求解最小权匹配,得到最优解。文章给出了具体的代码实现,并提供了一篇题解作为参考。 ... [详细]
  • 一:跨域问题1、同源策略(浏览器的安全策略)    只允许当前页面朝当前域下发请求,如果向其他域发请求,请求可以正常发送,数据也可以拿回,但是被浏览器拦截了  2、c ... [详细]
  • Pylance有哪些特性
    这篇文章给大家分享的是有关Pylance有哪些特性的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Pylance安装和其他VSC ... [详细]
  • 消息中间件RabbitMQ 高级特性之消费端ACK与重回队列
    什么是消费端的ACK和重回队列?消费端的手工ACK和NACK消费端进行消费的时候,如果由于业务异常我们可以进行日志的记录,然后进行补偿如果由于服务器宕机等严重问题 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
author-avatar
mobiledu2502859073
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有