使用opencv实现简单的人脸识别

这篇具有很好参考价值的文章主要介绍了使用opencv实现简单的人脸识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、opencv模块的使用

1、简介

opencv-python是一个python绑定库,旨在解决计算机视觉问题。使用opencv模块,可以实现一些对图片和视频的操作。

2、安装

安装opencv之前需要先安装numpy, matplotlib。然后使用pip安装opencv库即可。

3、导入

使用import cv2进行导入即可,需要注意的是cv2读取图片的颜色通道是BGR(蓝绿红)。

4、使用

使用cv2.imread()接收读取的图片,此处需要注意的是读取路径必须为英文。

cat = cv2.imread("cat1.png")

使用cv2.imshow()函数显示读取的图片。

cv2.imshow("cat", cat)

其中,函数内的第一个参数为显示图片窗口左上角的名字,第二个参数为接收读取的图片。

注意:在调用显示图像的API后,要调用cv2.waitKey()给图像绘制留下时间,否则窗口会出现无响应情况,并且图像无法显示出来。

cv2.waitKey(0)

其中,函数内的意思是等待键盘输入的时间,单位毫秒,如果为0则无限等待。

最后,使用cv2.destroyAllWindows()释放内存。

cv2.destroyAllWindows()

显示图像结果如下。

使用opencv实现简单的人脸识别

二、实现简单的人脸识别

1、下载人类特征数据

首先在github网站下载开源人脸特征数据。网址:opencv/data at 4.x · opencv/opencv · GitHub

使用opencv实现简单的人脸识别

选择如上文件

使用opencv实现简单的人脸识别

选择人脸数据进行下载。

2、简单的人脸识别代码

首先使用cv2.imread()接收要读取的图片。

yoogni = cv2.imread("myq.jpg")

CascadeClassifieropencvobjdetect模块中用来做目标检测的级联分类器的一个类。传入人脸特征数据,返回识别出的人脸对象。

detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

使用detectMultiScale()接收返回检测出的人脸对象。

face_zone = detector.detectMultiScale(yoogni)

打印接收的对象。

print(face_zone)

输出结果如下:

使用opencv实现简单的人脸识别

输出的为检测的人类区域。

3、在图上绘制识别出的人脸区域

使用cv2.rectangle()绘制出识别成功的人脸区域。

for x, y, w, h in face_zone:
    cv2.rectangle(yoogni
, pt1=(x, y), pt2=(x + w, y + h), color=(0, 0, 255))

其中pt1是左上角坐标,pt2是右下角坐标,w是识别区域的宽,h是识别区域的高。颜色选择的是红色。

使用cv2.imshow()函数显示绘制完成的图片。

cv2.imshow("myq",yoogni)

输出结果如下:

使用opencv实现简单的人脸识别

三、进行多个人脸识别

在进行一张图片的多个人脸识别时,常常会出现识别错误的情况,如下图。

使用opencv实现简单的人脸识别

所以在识别时进行参数的调整。

face_zone = detector.detectMultiScale(myq, scaleFactor=1.3, minNeighbors=5) 

scaleFactor表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%,此处调整为1.3。

minNeighbors表示构成检测目标的相邻矩形的最小个数(默认为3个)。该参数指定每一个候选矩形边界框需要有多少相邻的检测点,此处调整为5。

输出结果如下。

使用opencv实现简单的人脸识别

可以看出,检测精度明显上升。

四、进行视频人脸识别

本周在图片人脸识别的基础上进行扩展,进行视频的人脸识别。

1、视频捕获

首先进行视频捕获。

cap = cv2.VideoCapture("video2.mp4")

videocapture是按帧读取视频,就是读取视频里的图片,这个函数返回一张图片和一个布尔类型的值,布尔类型的值表示还有没有下一帧。

flag, frame = cap.read()
print(flag, frame.shape)

此时frame是第一帧图片,frame.shape输出的是图片维度。输出结果如下:

使用opencv实现简单的人脸识别

传入人脸特征数据

detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

2、将图像转为黑白影像再进行人脸识别

因为在识别人脸的时候,黑白和彩色不影响识别,所以为了运行速度更快,可以将识别时候的视频转为黑白。

gray = cv2.cvtColor(luo, code=cv2.COLOR_BGR2GRAY)

对黑白图像进行人脸识别

face_zone = detector.detectMultiScale(gray)

3、对视频进行人脸识别

首先要使用while语句进行判别,判断视频是否读到最后一帧。返回全部帧,使用isOpened函数判断视频是否还打开。

while cap.isOpened():

在while语句中,首先按帧读取视频。

flag, frame = cap.read()

由于原视频过大,所以将视频重新调整一下大小,使用luo接收返回值。

luo = cv2.resize(frame, dsize=(640, 360))

再将图片转为黑白色,并进行人脸识别。

gray = cv2.cvtColor(luo, code=cv2.COLOR_BGR2GRAY)
face_zone = detector.detectMultiScale(gray)

在按帧绘制出识别区域。

for x, y, w, h in face_zone:
    cv2.rectangle(luo
, pt1=(x, y), pt2=(x + w, y + h), color=(0, 0, 255))

写判断语句,当视频播放到最后一帧时退出循环。

if not flag:
   
break

显示视频。

cv2.imshow("me", luo)

下面判断语句的意思是,等待10毫秒,如果用户没有摁下q键,就显示下一帧视频,并且cv2只读了图片没有读声音。及摁下q键退出视频。

if ord("q") == cv2.waitKey(20):
   
break

以上代码均写在while语句中。下面释放内存。

cv2.destroyAllWindows()
cap.release()

输出结果如下。

使用opencv实现简单的人脸识别

 文章来源地址https://www.toymoban.com/news/detail-418266.html

五、进行摄像头人脸识别

1、调取本地摄像头

还是使用videocapture函数,参数为0调取本地摄像头。

cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)

2、人脸识别

与上一节的人脸识别代码一样,输出结果如下。

使用opencv实现简单的人脸识别

 

3、保存视频

获取宽高,方便写入视频,因为转换为整形数字时可能会把小数点后几位截走,所以+1,视频大一点可以,小一点不行。

w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + 1
h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + 1

函数内第一个参数是视频名字;第二个是视频编码,及保存的视频格式;第三个是一秒几帧,第四个是视频的高宽。此处保存的视频名字为me,视频为avi格式。

vw = cv2.VideoWriter("me.avi", cv2.VideoWriter_fourcc("M", "P", "4", "2"), 24, (w, h))

在上一节人脸识别的while语句中,

cv2.imshow("me", frame)

这一句代码后面,判断摄像头录制是否结束。

if not flag:
   
break

如果视频没结束,把这一帧写入视频。

vw.write(frame)

保存结果如下。

使用opencv实现简单的人脸识别

使用opencv实现简单的人脸识别

 

 

到了这里,关于使用opencv实现简单的人脸识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用OpenCV实现人脸特征点检测与实时表情识别

    引言:         本文介绍了如何利用 OpenCV 库实现人脸特征点检测,并进一步实现实时表情识别的案例。首先,通过 OpenCV 的Dlib库进行人脸特征点的定位,然后基于特征点的变化来识别不同的表情。这种方法不仅准确度高,而且实时性好,可以广泛应用于人脸表情分析、人

    2024年04月15日
    浏览(48)
  • 在Visual Studio上,使用OpenCV实现人脸识别

    本文介绍了如何在 Visual Studio 上,使用 OpenCV 来实现人脸识别的功能 环境说明 : 操作系统 : windows 10 64位 Visual Studio 版本 : Visual Studio Community 2022 (社区版) OpenCV 版本 : OpenCV-4.8.0 (2023年7月最新版) 实现效果如图所示,识别到的人脸会用红框框出来 : 这部分详见我的另一篇博客 :

    2024年02月12日
    浏览(59)
  • Android 使用OpenCV实现实时人脸识别,并绘制到SurfaceView上

    上篇文章 我们已经通过一个简单的例子,在 Android Studio 中接入了 OpenCV 。 之前我们也 在Visual Studio上,使用OpenCV实现人脸识别 中实现了人脸识别的效果。 接着,我们就可以将 OpenCV 的人脸识别效果移植到 Android 中了。 1.1 环境说明 操作系统 : windows 10 64 位 Android Studio 版本

    2024年02月10日
    浏览(51)
  • python+opencv最简单的人脸识别入门

    安装python(最新3.10即可) 安装pycharm(社区版即可) 安装opencv-python(cmd输入pip install opencv-python即可,嫌慢用国内镜像也可以) 后续也需要安装opencv-contrib-python 结果是直接在窗口直接显示图片 灰度图与原始图比较 运行如下(疑似歪头马斯克没被识别出来) 更换了检测数据源,从单张图片

    2024年02月04日
    浏览(51)
  • 使用OpenCV工具包成功实现人脸检测与人脸识别,包括传统视觉和深度学习方法(附完整代码,模型下载......)

    要实现人脸识别功能,首先要进行人脸检测,判断出图片中人脸的位置,才能进行下一步的操作。 参考链接: 1、OpenCV人脸检测 2、【OpenCV-Python】32.OpenCV的人脸检测和识别——人脸检测 3、【youcans 的图像处理学习课】23. 人脸检测:Haar 级联检测器 4、OpenCV实战5:LBP级联分类器

    2024年02月08日
    浏览(44)
  • 使用OpenCV工具包成功实现人脸检测与人脸识别,包括传统视觉和深度学习方法(附完整代码,吐血整理......)

    要实现人脸识别功能,首先要进行人脸检测,判断出图片中人脸的位置,才能进行下一步的操作。 参考链接: 1、OpenCV人脸检测 2、【OpenCV-Python】32.OpenCV的人脸检测和识别——人脸检测 3、【youcans 的图像处理学习课】23. 人脸检测:Haar 级联检测器 4、OpenCV实战5:LBP级联分类器

    2024年02月12日
    浏览(43)
  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之四 简单行人人体检测效果

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之四 简单行人人体检测效果 一、简单介绍 二、简单行人人体检测效果实现原理 三、简单行人人体检测效果案例实现简单步骤 四、注意事项 Python是一种跨平台的计算机程序设计语言。是一种面向对

    2024年04月26日
    浏览(58)
  • 基于OpenCV提供的人脸识别算法LBPH实现人脸识别

    本文通过学习LBPH人脸识别算法,简要了解人脸识别技术的原理,实现人脸采集、训练人脸模型实现人脸识别。 OpenCV库自带的人脸级联分级器具有很好的人脸检测和人脸追踪效果,它是一个基于Haar特征的Adaboost级联分类器。特别注意,OpenCV库虽然自带人脸级联分级器,但是识

    2024年02月03日
    浏览(44)
  • opencv实现人脸识别(c++实现)

    本文章基于opencv + VS2015 实现人脸检测 可以直接打开摄像头对人脸进行识别,这些标识框也会跟随你的人脸移动。隐私问题,我这里对图片进行了识别。 opencv中文文档 官方文档说明 功能 :用于从视频文件、图像序列或摄像机捕获视频的类 3.1.1 open bool cv::VideoCapture::open(int i

    2024年02月07日
    浏览(48)
  • 人脸识别实战:使用Python OpenCV 和深度学习进行人脸识别

    首先简要讨论基于深度学习的面部识别的工作原理,包括“深度度量学习”的概念。 然后,我将帮助您安装实际执行人脸识别所需的库。 最后,我们将为静止图像和视频流实现人脸识别。 安装人脸识别库 ================================================================== 为了使用 Python 和

    2024年04月09日
    浏览(87)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包