OpenCV入门简单的人脸识别项目

news2025/2/24 13:24:05

在学会图像处理和打开摄像头获取视频流后,就可以开展简单的人脸识别项目。

文章目录

    • 检测人脸区域并绘制矩形
    • 多个人脸进行识别
    • 绘制五官位置
    • 视频检测人脸
    • 人脸识别

人脸识别首先需要检测到人脸。

检测人脸区域并绘制矩形

# 加载图片
    img = face_recognition.load_image_file("lena.png")
    # 检测人脸区域
    f_pos = face_recognition.face_locations(img)[0]
    print("top,right.bottom,left", f_pos)
    # 在人脸区域绘制矩形
    cv2.rectangle(img,(f_pos[3],f_pos[0]),(f_pos[1],f_pos[2]),(0,0,200),2)
    cv2.imshow("",img)
    cv2.waitKey(0)

选张人脸图片检测一下。
在这里插入图片描述
大致的可以检测到人脸区域。

多个人脸进行识别

单个人脸识别后就需要进行多个人脸识别。

img = face_recognition.load_image_file("6.jpg")
    faces = face_recognition.face_locations(img)
    for face in faces:
        cv2.rectangle(img,(face[3],face[0]),(face[1],face[2]),(0,0,210),2)
    cv2.imshow("",img)
    cv2.waitKey(0)

加一个for循环即可。
在这里插入图片描述

绘制五官位置

img = face_recognition.load_image_file("18.jpg")
    faces = face_recognition.face_locations(img)
    # 五官位置
    marks = face_recognition.face_landmarks(img)
    for word,mark in enumerate(marks):
        for key,ms in mark.items():
            for i in range(len(ms)):
                point = ms[i]
                # 圆
                cv2.circle(img,(point[0],point[1]),2,(0,200,0))
    cv2.imshow("", img)
    cv2.waitKey(0)

在这里插入图片描述

视频检测人脸

图片检测人脸后,就需要在视频中检测到人脸。

# 摄像头
    # cap = cv2.VideoCapture(0,cv2.CAP_DSHOW)
    cap = cv2.VideoCapture(".mp4")
    while True:
        ok,frame = cap.read()
        if ok :
            # 从视频流中检测人脸
            faces = face_recognition.face_locations(frame)
            for (top, right, bottom, left) in faces:
                cv2.rectangle(frame,(left,top),(right,bottom),(0,0,100),2)
        cv2.imshow("", frame)
        cv2.waitKey(1)
    cap.release()
    cv2.destroyAllWindows()

可以选择视频文件或者摄像头!

人脸识别

检测到人脸后就需要进行人脸比对。

obama = face_recognition.load_image_file("1.jpg")
    biden = face_recognition.load_image_file("1.jpg")
    mei = face_recognition.load_image_file("1.jpg")
    # 对图片编码
    obamacode = face_recognition.face_encodings(obama)[0]
    bidencode = face_recognition.face_encodings(biden)[0]
    meicode = face_recognition.face_encodings(mei)[0]
# 已录入的人脸
    headimgs = [obamacode,bidencode]
    # 距离计算
    # dist = face_recognition.face_distance(headimgs,meicode)
    # print(dist)
    # 人脸匹配
    rs = face_recognition.compare_faces(headimgs,meicode,tolerance=0.5)
    print("摄像头中的是: ",rs)

将检测到的人脸进行编码并与已录入的人脸中进行比较。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/568336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

接口全生命周期的生产利器 ApiKit

一、ApiKit 整体介绍: 1、接口管理的需求与现状: 在软件项目研发的过程中,必然存在以下几个需求: API 接口文档的管理,常用的解决方案有 Swagger API 接口的调试,常用的解决方案有 Postman API 接口的自…

Java——网络编程套接字

目录 一、网络编程基础 1.1 为什么需要网络编程?——丰富的网络资源 二、什么是网络编程? 三、网络编程中的基本概念 3.2 请求和响应 3.3 客户端和服务端 常见的客户端服务端模型 四、Socket套接字 五、通信模型 5.1 Java数据报套接字通信模型 5.2 Java流…

【大数据之Hive】二、Hive安装

Hive安装部署(最小化部署) 安装部署Hive(最小化只用于本机测试环境中,不可用于生产环境),并运行。 步骤: (1)把apache-hive-3.1.3-bin.tar.gz解压到/opt/module/目录下&…

IIC总线学习

IIC总线 1.总线空闲状态。2.IIC总线的起始停止条件。3.IIC总线的数据传送4.IIC总线的应答5.IIC时序 1.总线空闲状态。 总线空闲时,SDA和SCL均为高电平。 2.IIC总线的起始停止条件。 起始条件:在SCL为高时,SDA总线被拉低,即出现…

json-server的基本使用

1、mock是什么? mockjs 作用:生成随机数据,拦截 Ajax 请求 目的:很多时候前端开发页面的过程中,后端的接口并没有写好,这个时候需要前端自己定义接口及接口的返回数据的结构体,这个时候就需要…

【活动】云计算的优势与发展趋势

写在前面 人生是一场消耗,要把美好的时光放在喜欢的人与事上。 一、前言 云计算作为一种新兴的信息技术应用解决方案,可以帮助企业解决IT资源利用率低、IT基础设施的建设和维护成本高、IT系统的安全和稳定性问题等痛点,提高企业的业务灵活性…

react表格行下载文件方法总结

一、前言 下载文件时,后台接口返回的响应体是文件流格式的,前端接收时如果不进行处理,就会无法正确下载文件(有可能会直接打开文件等)。 在此记录下react的表格行使用file-saver下载文件的方法。(注意不同…

文件包含的本质、预处理符号、# vs ##

何为头文件? 在C语言中,文件包含是一种常见的编程技术,它允许程序员在一个源文件中使用另一个源文件中的函数或变量。 文件包含通常使用#include预处理指令来实现。#include指令告诉预处理器将文件的内容插入到当前文件的指定位置中。 例如&a…

今天面了个阿里拿 38K 出来的,让我见识到了测试界的天花板

一直觉得自己的技术已经很不错了,直到最近遇到了一个阿里来的大佬 5年测试,应该是能达到资深测试的水准,即不仅能熟练地开发业务,而且还能熟悉项目开发,测试,调试和发布的流程,而且还应该能全面…

第04章 IDEA的安装与使用

【Why IDEA ?】 【注】JetBrains官方说明: 尽管我们采取了多种措施确保受访者的代表性,但结果可能会略微偏向 JetBrains 产品的用户,因为这些用户更有可能参加调查。 此外,2022年,某美国软件开发商在对近千名专业的J…

chatgpt赋能python:Python中的Split函数:去空操作详解

Python中的Split函数:去空操作详解 在Python编程中,我们经常需要对字符串进行操作。而字符串的分割操作在其中是非常常见的操作。Python中的split函数便是用来实现字符串分割的函数。不过,在使用split函数时通常还需要经过去除空格等操作。 …

Inno软件打包发布并后台安装相关驱动

bat安装 bat脚本的具体书写可自行百度。 其主要思路是将Driver文件存放在Bin下面,先安装Bin,然后在执行bat脚本来安装driver 具体些步骤: (1)编写一个install.bat的脚本 echo off ::下面三行代码是不显示dos界面 i…

加急!指定日本| 教育学老师9天获邀请函申报CSC

S老师拟申报今年的国家留学基金委(CSC)公派访问学者项目,因所在高校要求提前上报,所以委托时只留给我们11天申请时间,且指定日本高校。最终我们在第9天获得熊本大学邀请函,提前完成了客户的委托。 S老师背景…

Android平台GB28181设备接入模块如何对接NV21、YV12、RGB、YUV等外部数据

技术背景 我们在对接Android平台GB28181设备接入模块的开发者时,遇到这样的场景,除了Android设备(如执法记录仪、智能安全帽等)自带的camera或camera2前后摄像头数据外,还有些场景是需要外部编码前或编码后数据&#…

淡季不淡,满帮一季度净利创历史新高的背后原因是什么?

进入五月,经济复苏的成果越发体现在很多基础行业的表现中。经济的“大动脉”货运行业,也迎来一份新答卷。 北京时间5月22日美股盘前,数字货运平台满帮集团(NYSE:YMM,简称:满帮),发布…

预约直播领券,1%服务费,视频号618大促激励来了!

视频号直播6.18大促激励计划来了! 激励有效期为2023年05月31日20:00:00至2023年06月18日23:59:59;参与对象为活动期间满足视频号开播条件的。 通过视频号直播选择“购物”类目开播开通橱窗功能的商家和达人,可参与4大激励计划。 预约领券激…

pix2pixHD---model---生成器

然后是model的搭建: 在creat_model函数中: import torch def create_model(opt):if opt.model pix2pixHD:from .pix2pixHD_model import Pix2PixHDModel, InferenceModelif opt.isTrain:model Pix2PixHDModel()else:model InferenceModel()else:fro…

【FFH】OpenHarmony——ArkTs应用开发+正则表达式

【FFH】OpenHarmony——ArkTs应用开发正则表达式 文章目录 【FFH】OpenHarmony——ArkTs应用开发正则表达式1. 前言——系列介绍2. 本文摘要及背景2.1 摘要2.2 背景2.3 MindMap 3. 正则表达式在ArkTs的使用3.1 变量 RegExp3.2 使用3.3 贪婪模式与懒惰模式:eye_speech_bubble:Ar…

从HelloWorld深入源码了解SpringSecurity底层逻辑

文章目录 一、环境搭建1、创建项目测试1.1、搭建基础项目1.2、整合Spring Security 二、实现原理1、Spring Security的实现原理1.1、Spring Security 如何完成认证和授权1.2、Security Filters 2、 Spring Security默认配置和如何自定义配置 三、整个HelloWorld的流程分析三、H…

流程用例的签名保障,Python接口自动化框架封装案例!

目录 前言: 1.项目背景及需求 2.框架整体架构设计 3.接口管理模块的封装 4.用例管理模块的封装 5.请求模块的封装 6.签名模块的封装 7.案例展示及代码实现 结语: 前言: 随着互联网技术的不断发展,人们对于软件质量的要求…