OpenCV-Python:简单实现人脸识别

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

安装

pip install numpy
pip install opencv-python
pip install opencv-contrib-python

OpenCV主要模块

core

核心功能模块。该模块主要包含 OpenCV库的基础结构以及基本操作,例如OpenCV基础数据结构、绘图函数、数组操作相关函数、动态数据结构等calib3d:
这个模块名称是有 calibration(校准)和 3D 两个术语的缩写组合而成。包含了相机标定与立体视觉等功能,例如物体位姿估计、三维重建、摄像头标定等

dnn

深度学习模块。该模块是 OpenCV4版的一个特色,主要包括:构建神经网络、加载序列化网络模型等。但这一模块目前仅适用与正向传递计算(测试网络),原则上不支持反向计算(训练网络)。

feature2d

该模块是由 feature(特征)和 2D 两个术语的缩写组合而成的,其功能主要为处理图像特征点,例如特征检测、描述、匹配等

flann

快速近似最邻近库(Fast Library for Approximate Nearest Neighbors)。该模块是高维的近似近邻快速搜索算法库,主要包含快速近似近邻搜索、聚类等

gapi

该模块是 OpenCV4.0 中新增模块,旨在加速常规的图像处理。与其他模块相比,这个模块主要充当框架,而不是某些特定的计算机视觉算法

highgui

高层 GUI,包含创建和操作显示图像的窗口、处理鼠标事件及键盘命令、提高图形交互可视化界面等

imgcodecs

图像文件读取与保存模块,主要用于图像文件读取与保存

imgproc

该模块名称是由 image(图像)和 process(处理)两个组合而成。是重要的图像处理模块,主要包含:图像滤波、几何变换、直方图、特征检测、目标检测等

ml

机器学习模块,主要包括:统计分类、回归、数据聚类等

objdetect

目标检测模块,主要用于图像的目标检测,如检测 Haar 特征

photo

计算摄像模块,只要包含图像修复、去燥等

stitching

图像拼接模块,主要包含:特征点寻找与匹配图像、估计旋转、自动校准、接缝估计等图像拼接过程的相关内容

video

视频分析模块,主要包含:运动估计、背景分离、对象跟踪等视频处理等

videoio

视频输入/输出模块,主要用于读取、写入视频 或者图像序列


图片基本操作

摄像头采集图片

# 引入OpenCV库
import cv2

# 调用摄像头进行拍照 VideoCapture(0)0为默认摄像头
cap = cv2.VideoCapture(0)
# 获取一帧图片
# 如果捕获成功,代码中ret值为真,img为捕获的图像。
ret, img = cap.read()
# 释放捕获对象
cap.release()

读取图片

cv2.imread(path, 标记)

第二个参数指定图片被读取的方式:

  • cv2.IMREAD_COLOR : 读入彩色图像,默认模式;
  • cv2.IMREAD_GRAYSCALE : 以灰度模式读入图像;
  • cv2.IMREAD_UNCHANGED : 加载图像包含alpha通道。

使用数字简约表示以上三种标记,分别为 10-1

import cv2
image_path = "images.jpg"
img = cv2.imread(image_path,0)

显示图像

import cv2
cap=cv2.VideoCapture(0)
ret,img=cap.read()    
## 如果捕获成功,代码中ret值为真,img为捕获的图像。
cap.release()
if ret:
    cv2.imshow('demo',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
else:
    print("错误")
imshow(窗口名称, 图片对象) 

保存图片

import cv2
cap=cv2.VideoCapture(0)
ret,img=cap.read()
cap.release()
if ret:
    cv2.imshow('demo',img)
    cv2.imwrite('2.png', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
else:
    print("错误")
import cv2
cap=cv2.VideoCapture(0)
ret,img=cap.read()
cap.release()
if ret:
    cv2.imshow('demo',img)
    cv2.imwrite('2.png', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
else:
    print("错误")
cv2.imwrite(path, 图片对象)

色彩空间

色彩空间(Color space)是对色彩的组织方式,是坐标系统和子空间的阐述,位于系统的每种颜色都有单个点表示。

RGB

OpenCV中默认的色彩空间是BGRBGRRGB的区别只是三个颜色信道的位置发生了变化,实际上原理相同。

OpenCV-Python:简单实现人脸识别

HSV与HSL色彩空间

为了更好的数字化处理颜色,提出了HSVHSL两个色彩空间。

HSV色彩空间中,H色调(hue)S饱和度(saturation)V明度(value)

HSL色彩空间中,H色调(hue)S饱和度(saturation)L亮度(lightness)

灰度空间

OpenCV的灰度空间中,和一般的色彩空间相同,每一个颜色都有三个量,但是只有第一个亮度有值,所以表示为(亮度,0,0)

其中,亮度是根据如下灰度公式计算而得:Gray = R*0.299 + G*0.587 + B*0.114

色彩空间转换

经常用到的是以下两种:

  1. BGR空间到Gray空间 的转换;
  2. BGR空间到HSV空间 的转换。

使用的函数为:cv2.cvtColor()

它的函数声明为:

  1. cv2.cvtColor(图片对象,转换类型)

对于BGRGray的转换,使cv2.COLOR_BGR2GRAY类型。

同样的,对于BGRHSV的转换,使用cv2.COLOR_BGR2HSV类型。

import cv2, requests
r=requests.get('https://raw.githubusercontent.com/MrHarsh10/ImageHosting-/main/img/202209062216524.jpg')
with open('pic.jpg','wb') as f:
    f.write(r.content)
img=cv2.imread('pic.jpg',1)
img2=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('处理前',img)
cv2.imshow('处理后',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite('test.jpg',img2) 

人脸识别应用

类Harr特征

图像中的特征通常是指,图片的像素点经过一系列的运算之后得到的结果,这些结果可能是向量、矩阵和多维数据等等。类Harr特征是一种反映图像的灰度变化的,像素分模块求差值的一种特征。

Harr特征类别

可分为三类:边缘特征、线性特征、中心特征和对角线特征

边缘特征

OpenCV-Python:简单实现人脸识别

线性特征

OpenCV-Python:简单实现人脸识别

中心特征和对角线特征

OpenCV-Python:简单实现人脸识别

使用Harr分类器检测人脸

OpenCV 中的人脸训练模型格式为 XML,可以从 https://github.com/opencv/opencv/tree/master/data/haarcascades 。在此我们使用Harrcascade_frontalface_default.xml模型检测人脸。

声明分类器:

CascadeClassifier(path)

调用分类函数:

detectMultiScale(img,scaleFactor, minNeighbors, minSize)`

参数说明:

  1. 图片对象:待识别图片对象;
  2. scaleFactor:图像缩放比例;
  3. minNeighbors:对特征检测点周边多少有效点同时检测,这样可避免因选取的特征检测点太小而导致遗漏;
  4. minSize:特征检测点的最小尺寸,可选参数。
import cv2
img=cv2.imread('1.png',1)
grayimg=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
faces = face_cascade.detectMultiScale(grayimg, 1.2, 5)

for (x,y,w,h) in faces:
    print((x,y,w,h))
    cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 6)
cv2.imshow('demo',img)
cv2.imwrite('out.jpg',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

OpenCV-Python:简单实现人脸识别
OpenCV-Python:简单实现人脸识别文章来源地址https://www.toymoban.com/news/detail-493767.html

摄像头实时识别

import cv2
import numpy as np
capture = cv2.VideoCapture(0)
if capture.isOpened():
    while True:
        ret, frame = capture.read()
        grayimg = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
        faces = face_cascade.detectMultiScale(grayimg, 1.2, 5)
        for (x, y, w, h) in faces:
            cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
        cv2.imshow('frame', frame)
        if cv2.waitKey(1) == ord('q'):
            capture.release()
            break
cv2.destroyAllWindows()

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

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

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

相关文章

  • python+opencv最简单的人脸识别入门

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

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

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

    2024年04月26日
    浏览(36)
  • 人工智能-OpenCV+Python实现人脸识别(人脸检测)

    在OpenCV中使用Haar特征检测人脸,那么需要使用OpenCV提供的xml文件(级联表)在haarcascades目录下。这张级联表有一个训练好的AdaBoost训练集。首先要采用样本的Haar特征训练分类器,从而得到一个级联的AdaBoost分类器。Haar特征值反映了图像的灰度变化情况。例如:脸部的一些特征

    2024年02月06日
    浏览(81)
  • 【opencv】python实现人脸检测和识别训练

    OpenCV 中的人脸识别通常基于哈尔特征分类器(Haar Cascade Classifier)进行。以下是 OpenCV 人脸识别的基本原理: Haar Cascade Classifier : 特征分类器 :Haar 特征是一种基于矩形区域的特征,可以用于图像中的对象检测。这些特征可以表示边缘、线和区域的变化等。 级联分类器 :

    2024年01月17日
    浏览(37)
  • Python - OpenCV实现摄像头人脸识别(亲测版)

    要使用Python 3和OpenCV进行摄像头人脸识别,您可以按照以下步骤进行操作: 0.安装OpenCV软件 去官网直接下载安装即可,如果是C++使用OpenCV,需要使用编译源码并配置环境变量。 1.安装OpenCV库 在命令行中输入以下命令: 2.准备人脸检测器 使用OpenCV的人脸检测器可以检测出图像中

    2024年02月15日
    浏览(32)
  • OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)

    人脸处理是人工智能中的一个热门话题,人脸处理可以使用计算机视觉算法从人脸中自动提取大量信息,例如身份、意图和情感。人脸在视觉交流中起着重要作用,这是由于人脸中包含大量非语言信息,因此人脸处理一直以来对于计算机视觉学习者来说都是非常有趣的话题,

    2024年02月06日
    浏览(82)
  • Python+OpenCV 调用手机摄像头并实现人脸识别

    文章内容 : 1、windows 环境下安装 OpenCV 机器视觉环境搭建; 2、基于通过 Python+OpenCV 调用 手机摄像头 并实现人脸检测识别。 操作环境:Windows 10 64位 开发 IDE:Spyder 4.2.5 Python:3.8 OpenCV:OpenCv-Python 4.5.3 硬件需要:PC(win10)、手机 主要介绍使用 pip 安装 OpenCV(使用.whl文件安装

    2024年02月09日
    浏览(35)
  • 基于opencv和python的人脸识别签到系统设计与实现

    收藏和点赞,您的关注是我创作的动力   人脸识别广泛的应用于各个领域。一般来说,人脸具有人类基因、指纹等独特的生物学特性,因此可以作为生物特征识别,从而方便、快速、准确地识别被摄体,可见人脸识别是一种有效的身份识别工具。该技术可以应用于任何需要

    2024年02月04日
    浏览(36)
  • 计算机竞赛 深度学习 python opencv 实现人脸年龄性别识别

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的人脸年龄性别识别算法实现 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分 工作量:4分 创新点:3分 🧿 更多资料, 项目分享: https://gitee

    2024年02月07日
    浏览(46)
  • python基于opencv和tkinter实现人脸识别【内附完整代码】

    人脸识别技术已经在许多领域得到了广泛应用,例如安防、金融、医疗等等。人脸识别可以帮助我们识别和验证一个人的身份,这是一项非常重要的任务。本篇博客将介绍如何使用Python和OpenCV库进行人脸识别。我们将学习如何使用OpenCV中的人脸检测器检测图像中的人脸,如何

    2023年04月14日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包