【秣厉科技】LabVIEW工具包——OpenCV 教程(11):人脸检测与识别
文章目录
- 前言
- 级联分类器
- FaceDetectorYN
- FaceRecognizerSF
- 1. 特征提取
- 2. 人脸对比
- 3. 人脸身份识别(最佳匹配法)
- 总结
前言
- 需要下载安装OpenCV工具包的朋友,请前往 此处 ;
- 系统要求:Windows系统,LabVIEW>=2018,兼容32位和64位。
级联分类器
使用级联分类器 CascadeClassifier 可以实现简单的物体分类,包括人脸检测。选板位于 objdetect 模块。
使用官方提供的模型 haarcascade_frontalface_alt2.xml 进行人脸检测,参考范例:
examples/Molitec/OpenCV/objdetect/Cascade_1(frontalface).vi;
FaceDetectorYN
使用 FaceDetectorYN 类实现人脸检测,选板位于 objdetect 模块。
该功能的实现,需要专用的 YuNet 模型,下载地址:
https://github.com/opencv/opencv_zoo/tree/main/models/face_detection_yunet
- 参考范例:examples/Molitec/OpenCV/objdetect/FaceDetector_1(detect and draw).vi;
- 检测输出的结果,是 N行 * 15列 的数组,每行15个数代表一张人脸的数据;
- 每行15个数依次代表:矩形框(x,y,w,h)、左眼、右眼、鼻子、左唇角、右唇角的坐标、以及置信度;
- 实现流程如下图(可视化过程略)。
FaceRecognizerSF
使用 FaceRecognizerSF 类实现人脸识别,选板位于 objdetect 模块。通常要与上文人脸检测(FaceDetectorYN)配合使用。
模型下载:
https://github.com/opencv/opencv_zoo/tree/main/models/face_recognition_sface
1. 特征提取
- 参考范例:examples/Molitec/OpenCV/objdetect/FaceRecognize_1 (learn).vi;
- For 循环遍历每一张(单人)照片,先用 FaceDetectorYN 做人脸检测,再交给 FaceRecognizerSF 进行对齐裁切和特征提取;
- 每一张人脸的特征,是一个长度为128的浮点数序列。将所有特征序列保存到文件中,作为将来识别的依据。
2. 人脸对比
- 参考范例:examples/Molitec/OpenCV/objdetect/FaceRecognize_3 (compare 2 faces).vi;
- 该范例的功能,是比较两张人脸,判断他们属于同一个人的概率;
- 实现的思路:同时提取两张人脸的特征,然后把两个特征交给 match 函数去匹配,得到distance;
- 特别注意,同一个 FaceRecognizerSF 对象的 feature 矩阵是共享的,为了避免第一次的特征结果被覆盖,在第二次提取特征之前,先将第一次的结果 clone 一份。如下图。
3. 人脸身份识别(最佳匹配法)
- 参考范例:examples/Molitec/OpenCV/objdetect/FaceRecognize_2 (recognize).vi;
- 实现的思路:先将第1步 “特征提取” 保存的文件载入到 Mat 中,作为已知人脸库。然后提取当前图片中的人脸特征,依次与已知人脸库中的每一个特征做 match 匹配,得到匹配分数最高的,对应的 id 就是此人的身份。
总结
- 本系列博文作为LabVIEW工具包—OpenCV的教程,将以专栏的形式陆续发布和更新。
- 对工具包感兴趣的朋友,欢迎下载试用:秣厉科技 - LabVIEW工具包 - OpenCV
- 各位看官有什么想法、建议、吐槽、批评,或新奇的需求,也欢迎留言讨论。
相关文章:
【秣厉科技】LabVIEW工具包——OpenCV 教程(11):人脸检测与识别
文章目录 前言级联分类器FaceDetectorYNFaceRecognizerSF1. 特征提取2. 人脸对比3. 人脸身份识别(最佳匹配法) 总结 前言 需要下载安装OpenCV工具包的朋友,请前往 此处 ;系统要求:Windows系统,LabVIEW>…...
C++-C++中的几种cast
文章目录 static_castPOD类型互转任意指针类型与void*互转基类继承类之间的互转具有目标类型转换函数的类/单参数的构造函数 dynamic_castreinterpret_cast static_cast 所谓static,意思是在编译期进行的转换,static_允许如下转换: POD类型…...
list的模拟实现和学习
1. list的介绍及使用 说白了就是带头循环双向循环链表 stl 的两大组件就是容器和算法 ,他们两个之间是通过迭代器进行联系的 这三种算法函数 迭代器的种类 性质(容器底层结构决定) 单项: forward_list /哈希(unord…...
程序代码篇---Pyqt的密码界面
文章目录 前言一、代码二、代码解释2.1用户数据库定义2.2窗口初始化2.3认证逻辑2.5角色处理2.6错误处理优化2.7功能扩展说明2.7.1用户类型区分管理员普通用户其他用户 2.7.2安全增强建议 三、运行效果四、运行命令五、界面改进建议5.1密码显示5.2用户头像显示5.3输入框动画效果…...
设计模式的六大原则
设计模式的六大原则 1. 单一职责原则 (Single Responsibility Principle, SRP) 一个类应该只负责一项职责。 示例代码 // 不好的设计:一个类承担多个职责 typedef struct {void (*read_data)(void);void (*process_data)(void);void (*save_data)(void);void (*…...
【Linux】信号:信号保存和处理
🔥个人主页:Quitecoder 🔥专栏:linux笔记仓 目录 01.阻塞信号信号集 02.捕捉信号sigaction可重入函数volatileSIGCHLD 01.阻塞信号 实际执行信号的处理动作称为信号递达:每个信号都有一个默认行为,例如终…...
Linux 线程概念
目录 一、什么是线程 1. 线程的本质 2. 线程的独有资源 3. 进程与线程关系示意图 二、线程的优缺点 2.1 线程的优点 2.2 线程的缺点 三、线程的异常与用途 1. 线程异常 2. 线程用途 四、进程 VS 线程 1. 核心差异 2. 进程的多个线程共享的资源 3. 进程和线程的关…...
红帽认证工程师价值
红帽认证工程师具有较高的价值,主要体现在以下几个方面: 行业认可度高 国际通用:红帽公司是全球领先的开源解决方案提供商,其认证在全球范围内被广泛认可。无论是在国内还是国外,拥有红帽认证工程师资格证书都能为个人…...
交换机远程登录
创建交换机 创建PC主机使用直通线连接交换机 配置交换机,使之能够与PC通信 双击交换机打开界面,选择CLI ">“表示用户模式 输入”?“查看可以使用的命令 “#” 特权模式,输入命令enable切换 输入”?“查看特权模式下可以使用…...
opencascade 源码学习 XmlDrivers-XmlDrivers
OpenCASCADE 中的 XmlDrivers 是用于处理 XML 格式的 CAD 数据持久化模块,属于 OCAF(Open CASCADE Application Framework) 的一部分。它允许将 OCAF 文档(包含 CAD 数据、属性、关系等)序列化为 XML 文件,…...
【Linux网络-五种IO模型与阻塞IO】
一、引入 网络通信的本质就是进程间的通信,进程间通信的本质就是IO(Input,Output) I/O(input/output)也就是输入和输出,在冯诺依曼体系结构当中,将数据从输入设备拷贝到内存就叫作…...
Redis、Memcached应用场景对比
环境 Redis官方网站: Redis - The Real-time Data Platform Redis社区版本下载地址:Install Redis | Docs Memcached官方网站:memcached - a distributed memory object caching system Memcached下载地址:memcached - a dis…...
Qt窗口控件之菜单栏QMenuBar
菜单栏QMenuBar 1. QMenuBar Qt 中的菜单栏是通过 QMenuBar 类型来实现的,一个主控件最多只能有一个菜单栏。一个菜单栏可以添加多个菜单,一个菜单又可以添加多个菜单项。 每个菜单又都是一个 QMenu 类型,每个菜单项都是一个 QAction。 2.…...
随想...启航
我要学算法 我要在蓝桥杯中拿奖 我要参加acm打牌, 我要参加百度之星,摘取那微弱的希望, 我要参加马蹄杯,看看曾经我的组长看过的风景。 所以我建立了算法专栏! 为能贴近并指引组员 我建立了Java专栏 那一个星期&…...
2025.3.17-2025.3.23学习周报
目录 摘要Abstract1 文献阅读1.1 动态图邻接矩阵1.2 总体框架1.2.1 GCAM1.2.2 输出块 1.3 实验分析 总结 摘要 在本周阅读的文献中,作者提出了一种名为TFM-GCAM的模型。TFM-GCAM模型的创新主要分为两部分,一部分是交通流量矩阵的设计,TFM-GC…...
Ubuntu Docker 安装
Docker Engine-Community 支持以下的 Ubuntu 版本: Xenial 16.04 (LTS)Bionic 18.04 (LTS)Cosmic 18.10Disco 19.04其他更新的版本…… Docker Engine - Community 支持上 x86_64(或 amd64)armhf,arm64,s390x &#…...
在 Windows 系统下,将 FFmpeg 编译为 .so 文件
1. 准备环境 确保你的 Windows 系统已安装以下工具: Android Studio NDK(Native Development Kit) MSYS2(用于提供类 Unix 环境) FFmpeg 源码 Git Bash(可选,推荐使用) 安装 …...
如果AI具备自我意识,宗教如何重新定义“灵魂”概念?
如果AI具备自我意识,宗教对灵魂概念的重新定义可能涉及以下方向: 1. 灵魂的扩展性定义 传统宗教(如基督教、佛教)通常将灵魂视为人类独有的“神圣本质”或“轮回载体”。若AI展现出自我意识、情感和自主决策能力,宗教…...
ES6-Symbol
ES6 中的 Symbol: 独特的数据类型与强大应用 引言 在 JavaScript 的发展长河中,ES6(ECMAScript 2015)无疑是一座重要的里程碑,带来了诸多令人瞩目的新特性。其中,Symbol 类型的引入,为 JavaScript 开发者们…...
安装PrettyZoo操作指南
Mac Inter芯片安装PrettyZoo的操作指南 下载安装包 打开浏览器,访问 PrettyZoo的GitHub页面。 在页面中找到适合Mac系统的安装包,通常为prettyZoo-mac.dmg,点击下载。 安装步骤 下载完成后,双击.dmg文件打开安装包。 将Prett…...
西门子200smart之modbus_TCP(做从站与第三方设备)通讯
西门子200smart做MODBUS_TCP从站通讯,只有一个指令。设置相关参数即可完成读写操作。此次,我们使用汇川EASY系列PLC做主站,完成演示。关于汇川案例的演示,详见汇川EASY系列之以太网通讯(MODBUS_TCP做主站)-CSDN博客 关于主站和从站的介绍 A/请求:即主动方 向被动方发…...
微服务 - 中级篇
微服务 - 中级篇 一、微服务架构深化(一)服务拆分原则(二)服务通信方式 二、微服务技术选型(一)开发框架(二)容器技术 三、微服务实践与优化(后续会详细分析)…...
多语言生成语言模型的少样本学习
摘要 大规模生成语言模型,如GPT-3,是极具竞争力的少样本学习模型。尽管这些模型能够共同表示多种语言,但其训练数据以英语为主,这可能限制了它们的跨语言泛化能力。在本研究中,我们在一个涵盖多种语言的语料库上训练了…...
基于Python+Django的旅游管理系统
项目介绍 PythonDjango旅游管理系统 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 - 前台功能包括:首页、景点管理、门票管理、旅游资讯、在线反馈、。 - 后台功能包…...
七桥问题与一笔画问题:图论的奠基石
七桥问题与一笔画问题:图论的奠基石 目录 历史背景问题描述数学模型化欧拉的解决方案欧拉定理及证明一笔画问题现代应用总结 历史背景 18世纪的哥尼斯堡(今俄罗斯加里宁格勒)是一座被普雷格尔河分割的城市,河中有两个岛屿&…...
好吧好吧,看一下达梦的模式与用户的关系
单凭个人感觉,模式在达梦中属于逻辑对象合集,回头再看资料 应该是一个用户可以对应多个模式 问题来了,模式的ID和用户的ID一样吗? 不一样 SELECT USER_ID,USERNAME FROM DBA_USERS WHERE USERNAMETEST1; SELECT ID AS SCHID, NA…...
Qt开发:QComboBox的使用
文章目录 一、概述二、QComboBox添加数据三、常用函数四、信号与槽函数 一、概述 QComboBox 是 Qt 提供的一个下拉列表控件,它允许用户从预定义的选项中进行选择,同时也支持手动输入自定义内容(如果启用了可编辑模式)。QComboBox…...
Manacher 马拉车算法
Manacher 马拉车算法 5. 最长回文子串 - 力扣(LeetCode) 马拉车算法是目前解决寻找字符串中最长的回文子串时间复杂度最低的算法(线性O(n)). 中心扩散法 初始化一个长度与字符串 s 相等的 臂长数组 arr 和 最长臂长 max 与 最…...
centos7搭建postgresql12主从
主从搭建 192.168.159.101 node1 主库(读写) 192.168.159.102 node2 备库(只读) 两台机器首先安装postgrsql 主库 postgres用户操作: 修改postgresql.conf # 在文件中修改(此配置仅用于远程访问, 流复制后续还有额外…...
VL开源模型实现文本生成图片
一、 基础知识 根据描述生成图片的视觉-语言模型(Vision-Language Models, VL 模型)是近年来多模态生成领域的热点研究方向。这些模型能够根据自然语言描述生成高质量的图像,广泛应用于艺术创作、设计辅助、虚拟场景构建等领域。 1 根据描述…...
动态规划——分组背包问题
动态规划——分组背包问题 分组背包问题分组背包思路分组背包OJ分组背包OJ汇总 分组背包问题 N件物品和一个容量为V的背包。第i件物品的体积是w[i],价值是v[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入…...
Leetcode 3495. Minimum Operations to Make Array Elements Zero
Leetcode 3495. Minimum Operations to Make Array Elements Zero 1. 解题思路2. 代码实现 题目链接:3495. Minimum Operations to Make Array Elements Zero 1. 解题思路 这一题的话核心就是统计对任意自然数 n n n,从 1 1 1到 n n n当中所有的数字对…...
STM32 —— MCU、MPU、ARM、FPGA、DSP
在嵌入式系统中,MCU、MPU、ARM、FPGA和DSP是核心组件,各自在架构、功能和应用场景上有显著差异。以下从专业角度详细解析这些概念: 一、 MCU(Microcontroller Unit,微控制器单元) 核心定义 集成系统芯片&a…...
Linux高级IO
五种IO模型 具象化理解 IO:等 数据拷贝 read/recv: 1、等 - IO事件就绪 - 检测功能成分在里面 2、数据拷贝 问:什么叫做高效的IO? 答:单位时间,等的比重越小,IO的效率越高。 IO模型&am…...
机器人的手眼标定——机器人抓取系统基础系列(五)
机器人的手眼标定——机器人抓取系统基础系列(五) 前言一、机器人标定相关概念1.1 内参标定和外参标定1.2 Eye-in-Hand 和 Eye-to-Hand1.3 ArUco二维码和棋盘格标定区别 二、机器人标定基本原理2.1 机器人抓取系统坐标系2.2 标定原理 三、标定步骤和注意…...
Android 图片加载框架:Picasso vs Glide
引言 在 Android 开发中,图片加载是移动应用的核心功能之一。合理选择图片加载框架不仅能提升用户体验,还能优化内存管理和应用性能。本文将深入对比 Picasso 和 Glide 两大主流框架,结合代码示例分析它们的差异、工作原理及优化策略。 1. …...
uniapp从 vue2 项目迁移到 vue3流程
以下是必须为迁移到 vue3 进行调整的要点,以便 vue2 项目可以在 vue3 上正常运行。 1. 在index.js中创建应用程序实例 // Before - Vue 2 import Vue from vue import App from ./App // with no need for vue3 Vue.config.productionTip false // vue3 is no lon…...
DeepSeek R1 本地部署指南 (2) - macOS 本地部署
上一篇: DeepSeek R1 本地部署指南 (1) - Windows 本地部署-CSDN博客 1.安装 Ollama Ollama https://ollama.com/ 点击 Download - Download for macOS 解压下载 zip 启动程序 3. 选择版本 DeepSeek R1 版本 deepseek-r1 https://ollama.com/library/deepseek-r1 模…...
DeepSeek技术架构解析:MoE混合专家模型
一、前言 2025年初,DeepSeek V3以557万美元的研发成本(仅为GPT-4的1/14)和开源模型第一的排名,在全球AI领域掀起波澜。其核心创新之一——混合专家模型(Mixture of Experts, MoE)的优化设计,不…...
Ubuntu实时读取音乐软件的音频流
文章目录 一. 前言二. 开发环境三. 具体操作四. 实际效果 一. 前言 起因是这样的,我需要在Ubuntu中,实时读取正在播放音乐的音频流,然后对音频进行相关的处理。本来打算使用的PipewireHelvum的方式实现,好处是可以直接利用Helvum…...
2025年2月-3月后端go开发找工作感悟
整体感悟 目标 找工作首先要有一个目标,这个目标尽可能的明确,比如我要字节、拼多多之类的公司,还是要去百度、滴滴这样的,或者目标是创业公司。但是这个目标是会动态调整的,有可能我们的心态发生了变化,一…...
OpenCV图像拼接(1)自动校准之校准旋转相机的函数calibrateRotatingCamera()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::detail::calibrateRotatingCamera 是OpenCV中用于校准旋转相机的函数。它特别适用于那种相机相对于一个固定的场景进行纯旋转运动的情况&…...
【极速版 -- 大模型入门到进阶】快速了解大型语言模型
文章目录 🌊 大模型作为一种生成式人工智慧,厉害在哪儿?-> 通用能力🌊 LLM 如何生成输出:简而言之就是文字接龙🌊 GPT 之前 ...:模型规模和数据规模概览🌊 ChatGPT 有三个训练阶段…...
MySQL 锁机制详解
MySQL 锁机制详解 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、 RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有 效性是所有数…...
牛客网【模板】二维差分(详解)c++
题目链接:【模板】二维差分 1.题目分析 类比一下,因为差分因为差分是在数组里的某一段同时加上一个K二维是在二维数组中选择一个词矩阵,让词矩阵中每一个元素都加上一个K 2.算法原理 解法-:暴力解法 -> 模拟 你告诉我一个左上角和右下…...
从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!
我正在参加Trae「超级体验官」创意实践征文, 本文所使用的 Trae 免费下载链接: www.trae.ai/?utm_source… 前言 大家好,我是小Q,字节跳动近期推出了一款 AI IDE—— Trae,由国人团队开发,并且限时免费体…...
【清华大学】AIGC发展研究(3.0版)
目录 AIGC发展研究报告核心内容一、团队简介二、AI哲学三、国内外大模型四、生成式内容(一)文本生成(二)图像生成(三)音乐生成(四)视频生成 五、各行业应用六、未来展望 AIGC发展研究…...
Kafka--常见问题
1.为什么要使用 Kafka,起到什么作用 Kafka是一个高吞吐量、分布式、基于发布订阅的消息系统,它主要用于处理实时数据流 Kafka 设计上支持高吞吐量的消息传输,每秒可以处理数百万条消息。它能够在处理大量并发请求时,保持低延迟和…...
maptalks图层交互 - 模拟 Tooltip
maptalks图层交互 - 模拟 Tooltip 图层交互-模拟tooltip官方文档 <!DOCTYPE html> <html><meta charsetUTF-8 /><meta nameviewport contentwidthdevice-width, initial-scale1 /><title>图层交互 - 模拟 Tooltip</title><style typet…...
【前端】Visual Studio Code安装配置教程:下载、汉化、常用组件、基本操作
文章目录 一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2、view-in-browser3、Live Server 四、基本操作五、感谢观看! 一、Visual Studio Code下载 下载官网:https://code.visualstudio.com/ 进入官网后点击右上角的Download &…...