当前位置: 首页 > news >正文

Python - OpenCV实现摄像头人脸识别(亲测版)

要使用Python 3和OpenCV进行摄像头人脸识别,您可以按照以下步骤进行操作:

0.安装OpenCV软件

去官网直接下载安装即可,如果是C++使用OpenCV,需要使用编译源码并配置环境变量。

1.安装OpenCV库

在命令行中输入以下命令:

pip install opencv-python

2.准备人脸检测器

使用OpenCV的人脸检测器可以检测出图像中的人脸。在Python中,您可以使用以下代码来加载人脸检测器:

import cv2  face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

在这里,您需要提供XML文件的路径(方法在第四步),该文件包含用于检测人脸的特征。OpenCV提供了多个预训练的人脸检测器,您可以选择其中任何一个。
在这里插入图片描述

3.打开摄像头

使用OpenCV的VideoCapture类可以打开摄像头。以下是一个示例代码:

import cv2  cap = cv2.VideoCapture(0)

在这里,cap是一个VideoCapture对象,它表示打开的摄像头。0表示第一个摄像头。

4.循环读取帧并处理

使用OpenCV的read()方法从摄像头读取帧。以下是一个示例代码:

import cv2  cap = cv2.VideoCapture(0)  
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')  while True:  ret, frame = cap.read()  if ret:  gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  faces_rects = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)  for (x, y, w, h) in face_rects:  cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)  cv2.imshow('Face Detection', frame)  if cv2.waitKey(1) & 0xFF == ord('q'):  break  else:  break
# 使用release()方法释放摄像头,并使用destroyAllWindows()方法关闭所有窗口
cap.release()  
cv2.destroyAllWindows()

在这里,需要用到haarcascade_frontalface_default.xml文件,这个文件在安装好的opencv目录下找到。

  • haarcascade_frontalface_default.xml文件路径
    C:\OpenCV\opencv\build\etc\haarcascades

  • 或者在github下载:
    https://github.com/opencv/opencv/tree/master/data/haarcascades

我们使用detectMultiScale()方法检测每一帧中的所有人脸,并在每张脸上绘制一个矩形。我们还使用imshow()方法显示结果。waitKey()方法等待用户按下键盘上的任意键,然后我们使用break语句退出循环。

综上所述,以上是使用Python 3和OpenCV进行摄像头人脸识别的基本步骤。您可以根据自己的需求进行修改和扩展。
![在这里插入图片描述](https://img-blog.csdnimg.cn/077b697fc76f4f6e8fee0378a62f094d.png

http://www.lryc.cn/news/102749.html

相关文章:

  • date日期相关操作汇总
  • 生产者-消费者模式
  • Jetson Nano之ROS入门 -- YOLO目标检测与定位
  • 【移动机器人运动规划】01 —— 常见地图基础 |图搜索基础
  • mongotop跟踪Mongodb集合读取和写入数据
  • Linux中使用du命令来查看目录的大小
  • 【Linux】进程篇Ⅰ:进程信息、进程状态、环境变量、进程地址空间
  • 保护 TDengine 查询性能——3.0 如何大幅降低乱序数据干扰?
  • 状态机实现N位按键消抖
  • uniapp自定义消息语音
  • k8s安装Jenkins
  • 共筑开源新长城 龙蜥社区走进开放原子校源行-清华大学站
  • Jgit 工具类 (代码检出、删除分支(本地、远程)、新建分支、切换分支、代码提交)
  • 什么是redux?如何在react 项目中使用redux?
  • mysql的json处理
  • 前端学习——Vue (Day8)
  • Windows环境下安装及部署Nginx
  • 使用AOP切面对返回的数据进行脱敏的问题
  • TDengine时区设置
  • 站外引流效果差?一文带你搞懂解海外主流社交媒体算法!
  • css 动画之旋转视差
  • maven项目、springboot项目复制文件进来后没反应、不编译解决方法
  • android jetpack App Startup 应用启动时初始化组件(java)
  • 【设计模式|行为型】命令模式(Command Pattern)
  • SqlServer 批量删除表
  • [Linux]线程基本知识
  • STM32 串口基础知识学习
  • 页面滚动时隐藏element-ui下拉框/时间弹框
  • C#中i++和++i的底层原理
  • 在win10下安装verilator