文章目录

  • 基于opencv的实现简单的人脸识别功能
    • 1. 环境配置
    • 2.基本项目代码:
    • 3.onerror:在运行时遇到了一个问题:
    • 4.实现视频检测功能
    • 5.实现视频截图
  • 更好的阅读体验可以点击下方链接

基于opencv的实现简单的人脸识别功能

使用opencv实现人脸识别

1. 环境配置

在opencv官网下载opencv,在pycharm上安装opencv-python

官网上下载的opencv后安装,位置如图:

2.基本项目代码:

import cv2 as cv# define a function to check the img
def face_detect_demo():gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)# 使用opencv自带的已经训练好的分类器# 训练器位置就是在官网内的下载的opencv自带已训练的模型face_detect = cv.CascadeClassifier(r'D:\opencv_install\opencv\sources\data\haarcascades\haarcascade_frontalface_alt2.xml')'''detectMultiScale:参数说明:第一个参数为源图片,第二个参数为缩放倍数(太小可能会运行较慢)第三个参数为比较次数,第四个参数为0,第五个参数为最小人脸大小,第六个为最大人脸大小'''face = face_detect.detectMultiScale(gray)for x, y, w, h in face:cv.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)cv.imshow('result', img)# load the img
# 这里填写图片路径
img = cv.imread('photo/target.png')# change the img size
img = cv.resize(img, (400, 200))face_detect_demo()# let the img convert to gray (convert color)
# img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)# drew a square box / rectangle 矩形
# the params is srcImg, 绘制的图形的起始点和长宽,the color of rectangle, thickness of rectangle
# cv.rectangle(img, (10, 10, 100 + 50, 100 + 50), (0, 0, 255), 1)# drew a circle
# the params is srcImg, center of the circle, radius of the circle, the color of the circle, thickness
# cv.circle(img, (50, 50), 50, (255, 0, 0), 2)# show this img
# cv.imshow('photo1', img)# while enter the 'q', the program will exit
while True:if ord('q') == cv.waitKey(0):break
cv.destroyAllWindows()
import cv2 as cvdef check_face():# convert the color to graygray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)deal_result = cv.CascadeClassifier(r'D:\opencv_install\opencv\sources\data\haarcascades\haarcascade_frontalface_alt2.xml')face = deal_result.detectMultiScale(gray, 1.05, 5, 0, (20, 20), (100, 100))for x, y, w, h in face:cv.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)cv.imshow('result', img)# load the img
img = cv.imread('photo/121.jpg')
img = cv.resize(img, (821, 548))
check_face()
# cv.imshow("123", img)while True:if ord('q') == cv.waitKey(0):break

3.onerror:在运行时遇到了一个问题:


Traceback (most recent call last):File "D:\PyCharm_Code\com\OpenCV\Python\[多人脸识别.py](http://xn--gmqt7fd7h038b99k.py)", line 22, in <module>check_face()File "D:\PyCharm_Code\com\OpenCV\Python\[多人脸识别.py](http://xn--gmqt7fd7h038b99k.py)", line 11, in check_faceface = deal_result.detectMultiScale(gray, 1, 5, 0, (20, 20), (100, 100))cv2.error: OpenCV(4.5.4) D:\a\opencv-python\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1389: error: (-215:Assertion failed) scaleFactor > 1 && _image.depth() == CV_8U in function 'cv::CascadeClassifierImpl::detectMultiScale'造成的原因为:face = deal_result.detectMultiScale(gray, 1, 5, 0, (20, 20), (100, 100)) detectMultiScale函数的第二个参数为1,将1改成大于1的参数即可**(****建议使用默认值****)**

关于这个函数(detectMultiScale)在网上找到的一些解释:

detectMultiScale函数含义

4.实现视频检测功能

import cv2 as cvdef check_face(img):img_copy = imgimg = cv.cvtColor(img, cv.COLOR_BGR2GRAY)face_detect = cv.CascadeClassifier(r'D:\opencv_install\opencv\sources\data\haarcascades\haarcascade_frontalface_alt.xml')face_result = face_detect.detectMultiScale(img)for x, y, w, h in face_result:cv.rectangle(img_copy, (x, y), (x + w, y + h), (0, 0, 255), 2)cv.imshow('result', img_copy)# 调用摄像头 0为默认的摄像头
cap = cv.VideoCapture(0)# 读取一个视频作为判断
# cap = cv.VideoCapture('video路径')# 读取一个网络视频作为判断
# cap = cv.VideoCapture('video地址')# 第一个参数表示有值的时候为True,第二个参数为帧的内容img
# cap.read()while True:flag, frame = cap.read()if not flag:breakcheck_face(frame)# 100ms 检测一次if ord('q') == cv.waitKey(100):breakcv.destroyAllWindows()
cap.release()

5.实现视频截图

import cv2 as cvcap = cv.VideoCapture(0)
flag = 1
num = 1
while cap.isOpened():ret_flag, vShow = cap.read()cv.imshow('show', vShow)k = cv.waitKey(1) & 0xFF  # 按键监听if k == ord('s'):cv.imwrite("photo/" + str(num) + ".jpg", vShow)  # 进行图片保存print("success")print("-----------------")num += 1elif k == ord(' '):breakcap.release()
cv.destroyAllWindows()

更好的阅读体验可以点击下方链接

点击下方链接
基于opencv的实现简单的人脸识别功能

或者复制到浏览器

https://www.wolai.com/VnkJcNBkrV5SrCTiKA6fi

基于opencv的实现简单的人脸识别功能相关推荐

  1. 基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕实战

    基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕实战 基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕 前言 运行python环境 ...

  2. 【毕业设计_课程设计】基于opencv、dilb的员工人脸识别考勤系统

    文章目录 0 项目说明 1 需求分析 2 总体设计 3 详细设计 4 效果展示 5 实验心得 6 项目源码 7 最后 0 项目说明 基于opencv.dilb的员工人脸识别考勤系统 提示:适合用于课程 ...

  3. 基于pyqt5的登录界面及人脸识别功能界面相互跳转的设计(1)

    基于pyqt5的登录界面及人脸识别功能界面相互跳转的设计(1) 这个是登录界面: 部分代码如下: // An highlighted block from 文件1 import * from PyQt ...

  4. opencv 训练人脸对比_【项目案例python与人脸识别】基于OpenCV开源计算机视觉库的人脸识别之python实现...

    " 本项目是一个基于OpenCV开源库使用python语言程序实现人脸检测的项目,该项目将从[项目基础知识](即人脸识别的基本原理).[项目实践](人脸识别所需要的具体步骤及其python程 ...

  5. python3+opencv+tkinter开发简单的人脸识别小程序

    学校里有门图像处理的课程最终需要提交一个图像处理系统, 正好之前对于opencv有些了解,就简单的写一个人脸识别小程序吧 效果图如下 笔者IDE使用Pycharm,GUI编程直接使用内置的tkinte ...

  6. [机器学习]基于OpenCV实现最简单的数字识别

    http://blog.csdn.net/jinzhuojun/article/details/8579416 本文将基于OpenCV实现简单的数字识别.这里以游戏Angry Birds为例,通过以下 ...

  7. 基于 opencv tenserflow2.0 实战 CNN 人脸识别锁定与解锁 win10 屏幕

    代码参考:https://download.csdn.net/download/weixin_55771290/87430422 前言 windows hello 的低阶板本,没有 Windows h ...

  8. opencv入门——实现简单的人脸识别

    一.导库: pip install opencv-python 二.下载特征数据: 可以去github下载. 链接:https://pan.baidu.com/s/1TtFMYH889GdZfchEQ ...

  9. 基于OpenCV的图片和视频人脸识别

    目录

  10. 基于百度AI开放平台的人脸识别

    文章目录 前言 人脸识别流程图 一.注册账号 二.创建应用 三.下载SDK文件 四.创建工具类 五.创建用于人脸识别的网页 1.引入css文件 2.创建注册按钮 3.创建模态框,用于捕捉人脸 4.引入 ...

最新文章

  1. Linux07-OpenSSH
  2. RTP timestamp与帧率及时钟频率的关系
  3. 顶部对齐css表单,vertical-align 表单元素垂直对齐的解决方法
  4. Json转换值类型字段为空字符串时报错问题
  5. 牛客网_PAT乙级1007_A除以B (20)
  6. 使用 Recipe 安装 SAP Commerce Cloud
  7. Angular Component class属性初始化和构造函数执行的先后顺序
  8. 缓存淘汰、缓存穿透、缓存击穿、缓存雪崩、数据库缓存双写一致性
  9. VC中对象的序列化与文件I/O
  10. 物联网建设中通讯互联层的终极解决方案
  11. oracle 查出所有空表,Oracle查看某个用户上的所有空表
  12. Java怎么实现大的map_关于Java中的ConcurrentHashMap的实现原理有大神可以详细介绍下吗?...
  13. Linux 下使用Postgre中的命令,要使用postgres这个用户
  14. 【渝粤教育】国家开放大学2019年春季 2328仓储与配送管理 参考试题
  15. windows10 + centos7 双系统
  16. ctfshow菜狗杯wp
  17. SQL获取当前月份的第一天
  18. 一些Mac OS X的使用技巧
  19. 方便记忆的电话号码C语言
  20. TCP状态转换以及TIMEWAIT和FIN_WAIT_2状态

热门文章

  1. [转][职业导航]作为初涉销售的年轻人,你是否具备核心竞争力?
  2. [1160]C语言实验——某年某月的天数
  3. DRM in Android详解--转
  4. 彻底阻止、禁用google chrome浏览器自动更新、升级
  5. 2021-08-29 网安实验-网络协议栈渗透测试之DDOS攻击之CC攻击
  6. 【华人学者风采】忻获麟 加州大学欧文分校
  7. 江在川上曰:vue-Router学习笔记
  8. 光敏二极管的工作原理
  9. Ceph rgw中的元数据组织形式及存储结构分析
  10. ppt流程图箭头分叉_箭头循环图ppt模板_PPT结构图制作中箭头跟着目标走的技巧_ppt箭头流程图模板_ppt箭头循环图...