windows环境 python + opencv 加载 onnx 人脸检测模型识别人脸测试

news2024/11/20 3:24:10

参考博客:

        1. OpenCV-Python 4.5.4 人脸识别应用:https://blog.csdn.net/qq_36563273/article/details/121510440( 代码就是在此博客代码基础上改的,主要添加了人脸画框的逻辑 )

1. windows环境:win11

2. 安装 miniconda2-4.7.10:

3. 新建 python3.9 的 conda 环境:

        1. 创建 conda 环境并瞎下载 opencv、numpy:

        conda create --name conda_env_python_3_9  python=3.9
        conda  activate conda_env_python_3_9
        pip install opencv-python==4.5.4.58 -i https://pypi.tuna.tsinghua.edu.cn/simple
        pip install numpy==1.22.4 -i https://pypi.tuna.tsinghua.edu.cn/simple

         2. 查看安装情况:

 4. test.py:

import cv2

# 定义输入和变量
img1 = cv2.imread('face_img/hezhao.jpeg')
img2 = cv2.imread('face_img/yaoming_02.jpeg')

new_shape = (300, 300)   # 统一缩放为 300*300
cos_thresh = 0.363       # cos阈值,距离越大越接近
L2_thresh = 1.128        # L2阈值,距离越小越接近
img1 = cv2.resize(img1, new_shape)
img2 = cv2.resize(img2, new_shape)

# 初始化模型:
faceDetector = cv2.FaceDetectorYN.create('face_model/yunet.onnx', '', new_shape)
faceRecognizer = cv2.FaceRecognizerSF.create('face_model/face_recognizer_fast.onnx', '')

# 检测、对齐、提取特征:
# detect输出的是一个二维元祖,其中第二维是一个二维数组: n*15,n为人脸数,
# 15为人脸的xywh和5个关键点(右眼瞳孔、左眼、鼻尖、右嘴角、左嘴角)的xy坐标及置信度
faces1 = faceDetector.detect(img1)  
face_count = len( faces1[1] )
print("人脸个数:")
print( face_count )
for i in range( 0,face_count ):
    print( i )
    face_key_info_array = faces1[1][ i ]
    x1 = int( face_key_info_array[ 0 ] )
    y1 = int( face_key_info_array[ 1 ] )
    width = int( face_key_info_array[ 2 ] )
    height = int( face_key_info_array[ 3 ] )
    x2 = x1 + width
    y2 = y1 + height

    # 在图片上画矩形框
    # cv2.rectangle(img1, (x1, y1), (x2, y2), color, thickness)
    cv2.rectangle(img1, (x1,y1), (x2,y2), (0,255,0), 1, cv2.LINE_8)

print(  )


cv2.imshow("image", img1)
cv2.waitKey(0)

aligned_face1 = faceRecognizer.alignCrop(img1, faces1[1][0])    # 对齐后的图片
feature1 = faceRecognizer.feature(aligned_face1);               # 128维特征

# faces2 = faceDetector.detect(img2)
print( faces2 )
aligned_face2 = faceRecognizer.alignCrop(img2, faces2[1][0])
feature2 = faceRecognizer.feature(aligned_face2);

cv2.imwrite('face_img/aligned1.jpg',aligned_face1)
cv2.imwrite('face_img/aligned2.jpg',aligned_face2)

# 人脸匹配值打分:
cos_score = faceRecognizer.match(feature1, feature2, 0)
L2_score = faceRecognizer.match(feature1, feature2, 1)

5. 代码目录结构:

 6. 运行展示效果:

 

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

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

相关文章

用python解释进程与协程(python实例二十八)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.创建进程池,异步执行多个任务 3.1 代码构思 3.2 代码示例 3.3 运行结果 4. 模拟协程堵塞 4.1 代码构思 4.2 代码示例 4.3 运行结果 5.总结 1.认识Python Python 是一个高…

算法019:x的平方根

x的平方根. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/sqrtx/ 这个题乍一看很奇怪,但是换个角度,我们用二分查找的思想来完成这个题。 …

组队学习——决策树(以泰坦尼克号公共数据集为例)

本次我们挑战的数据集为泰坦尼克号公共数据集,为了降低难度,我们在原有数据集的基础上进行了优化,具体数据集介绍如下: 在这里也介绍一下数据的含义吧 数据介绍: Survived:是否存活(label&#…

巧用外部资源加速任务执行

1. 背景 在人工智能时代,对算力的要求越来越高,为了加速任务的执行,可以削减软件层面的干扰以充分挖掘本机的硬件算力,具体可参考前面的文章。 若充分挖掘本机硬件能力之后还显不足,就需要增加硬件或提高硬件配置&am…

【小程序爬虫入门实战】使用Python爬取易题库

文章目录 1. 写在前面2. 抓包分析 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研…

pinia定义store及其简单的使用

定义store 在使用pinia管理状态之前,我们得知道 Store 是用 defineStore() 定义的,它的第一个参数要求是一个独一无二的名字: import { defineStore } from "pinia";// 你可以任意命名 defineStore() 的返回值,但最好使用 store 的…

C语言 #指针数组 #数组指针 #数组参数、指针参数

文章目录 前言 一、指针数组 1、概念: 2、指针数组有什么用呢? 二、数组指针 1、数组指针的定义 2、数组名与 &数组名 的区别 3、数组指针如何初始化? 4、数组指针的用法 三、根据代码区分 指针数组 和 数组指针 四、数组参数、指针参数 …

【PYTHON】多进程运行示例含共享数据

运行结果 Python多进程调用示例 import multiprocessing import time import os import sys# 注册多个函数用于不同进程分别调用 def testcase0():time.sleep(1)return "case0_"+get_time()def testcase1(timestamp):return "case1_"+timestampdef testca…

使用Spring Boot与Spire.Doc实现Word文档的多样化操作

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 前言 使用Spring Boot与Spire.Doc实现Word文档的多样化操作具有以下优势: 强大的功能组合:Spring Boot提供了快速构建独立和生产级的Spring应用程序的能力,而Spire.Doc则…

CSS(三)——CSS 背景

CSS 背景 CSS 背景属性用于定义HTML元素的背景。 CSS 背景属性 Property描述background简写属性,作用是将背景属性设置在一个声明中。background-attachment背景图像是否固定或者随着页面的其余部分滚动。background-color设置元素的背景颜色。background-image把…

MySQL查询执行(二):order by工作原理

假设你要查询城市是“杭州”的所有人名字, 并且按照姓名排序返回前1000个人的姓名、 年龄。 假设这个表的部分定义是这样的: -- 创建表t CREATE TABLE t (id int(11) NOT NULL,city varchar(16) NOT NULL,name varchar(16) NOT NULL,age int(11) NOT N…

240728pycharm使用问题之无法找到指定命令

文章目录 1.问题描述2.分析3.解决后界面展示 1.问题描述 pycharm中断报错,让你初始化powershell,并且说找不到anconda中指定命令,很明显anaconda环境配置不对 2.分析 1.检查anaconda环境变量配置是否ok; 2.检查pycharm终端配置是否ok 3.检查pyacharm环境配置 3.解决后界面展…

第一期:AI芯片——智能时代的“芯”跳加速器

🌟 小竹笋的AI奇旅 🚀 Hey小伙伴们!👋 我是小竹笋,一名喜欢捣鼓技术、热爱创作的工程师。从今天开始,我们将踏上一场关于人工智能(AI)核心技术领域的探索之旅。第一站,我…

MarkTool之UDP

UDP客户端,主要作用是与UDP服务端连接进行数据通讯 1、连接参数有4个,绑定IP和Port,服务端IP和Port 2、接收数据和发送数据的参数设置,有16进制,有字符,有原始数据,都可进行选择 3、定时发送&a…

大数据时代,区块链是如何助力数据开放共享的?

在大数据时代,区块链技术以其独特的优势,为数据开放共享提供了强有力的支持。以下是区块链助力数据开放共享的几个主要方面: 1. 增强数据安全性与隐私保护 加密安全:区块链技术采用先进的加密算法,如国密非对称加密技…

安装Keil5 MDK

文章目录 前言一、安装Keil5 MDK 软件以及器件支持包1. 器件支持包离线安装方式2. 器件支持包在线安装方式 二、软件注册三、驱动安装1. 安装STLINK驱动2. 安装USB转串口驱动 前言 提示:本文主要用作在学习江协科大STM32入门教程后做的归纳总结笔记,旨在…

LangChain--如何使用大模型

【🍊易编橙终身成长社群🍊】 大家好,我是小森( ﹡ˆoˆ﹡ ) ! 易编橙终身成长社群创始团队嘉宾,橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官、CSDN人工智能领域优质创作者 。 LangCha…

x64dbg反汇编技术入门学习笔记

EIP EIP是程序下一次要运行地方 寄存器 临时存放数据,按照Intel规定去存放 window API 微软提供的,用户可以操作系统的一些接口,以函数的形式体现 杀软是如何查杀恶意的 镜像地址 实际地址 实际运行后代码的地址 查外部调用段就可以定位到.rdat…

vscode 根据不同语言项目自定义配置项(插件版本)

2024.7.28 天微热,心情燥。 前文,如果我们是一个全栈开发者,我们想在写前端项目时只让vscode加载前端的插件,写后端的时候只加载后端的插件,该如何配置呢? 1. 通过配置 workspace 这里大家都会&#xff0…

【02】Java的语言类型

Java语言的类型可以分为两大类:基本类型和引用类型 一、基本类型 Java中引进了八个基本类型,使用基本类型能够在执行效率及内存使用方面提升软件性能,因为它们都是由Java虚拟机预先定义好的。 从上到下,值域依次扩大&#xff0…