openmv--人脸识别

news/2025/2/7 9:47:16/文章来源:https://www.cnblogs.com/ECHO1234/p/18702078

这里仅讨论识别人脸,先不讨论识别不同的人脸
本例程的目的是利用haar算子实现人脸识别。
这个例子展示了OpenMV Cam的内置人脸检测功能。
人脸检测通过在图像上使用Haar Cascade特征检测器来工作。 haar级联是
一系列简单的区域对比检查。 对于内置的前表面探测器,有25个阶段的检查,
每个阶段有数百个检查一块。 Haar Cascades运行速度很快,因为只有在
以前的阶段过去后才会评估后期阶段。 此外,您的OpenMV使用称为
整体图像的数据结构来在恒定时间内快速执行每个区域对比度检查
(特征检测仅为灰度的原因是因为整体图像的空间需求)。

import sensor, time, image

重置感光元件
sensor.reset()

感光元件设置
sensor.set_contrast(3)
sensor.set_gainceiling(16)
HQVGA and GRAYSCALE are the best for face tracking.
HQVGA和灰度对于人脸识别效果最好
sensor.set_framesize(sensor.HQVGA)
sensor.set_pixformat(sensor.GRAYSCALE)
注意人脸识别只能用灰度图哦

加载Haar算子
默认情况下,这将使用所有阶段,更低的satges更快,但不太准确。
face_cascade = image.HaarCascade("frontalface", stages=25)
image.HaarCascade(path, stages=Auto)加载一个haar模型。haar模型是二进制文件,
这个模型如果是自定义的,则引号内为模型文件的路径;也可以使用内置的haar模型,
比如“frontalface” 人脸模型或者“eye”人眼模型。
stages值未传入时使用默认的stages。stages值设置的小一些可以加速匹配,但会降低准确率。
print(face_cascade)

FPS clock
clock = time.clock()

while (True):
clock.tick()

 拍摄一张照片
img = sensor.snapshot()Find objects.Note: Lower scale factor scales-down the image more and detects smaller objects.Higher threshold results in a higher detection rate, with more false positives.

** objects = img.find_features(face_cascade, threshold=0.75, scale=1.35)**
image.find_features(cascade, threshold=0.5, scale=1.5),thresholds越大,
匹配速度越快,错误率也会上升。scale可以缩放被匹配特征的大小。

在找到的目标上画框,标记出来
for r in objects:img.draw_rectangle(r)打印FPS。注:实际FPS更高,流FB使它更慢。
print(clock.fps())

find_features(cascade, threshold=0.5, scale=1.5, roi: Tuple[int, int, int, int] | None = None)→ List[Tuple[int, int, int, int]]
此方法在图像中搜索所有与传入的Haar级联匹配的区域,并返回一个围绕这些特征的边界框矩形元组列表 (x, y, w, h)。如果未找到特征,则返回一个空列表。

cascade 是一个Haar级联对象。有关详细信息,请参阅 image.HaarCascade()。

threshold 是一个阈值(0.0-1.0),较小的值会增加检测率,但会提高误检率。相反,较高的值会降低检测率,但会降低误检率。

scale 是一个浮点数,必须大于1.0。较高的比例因子会运行得更快,但图像匹配效果会大打折扣。一个好的值介于1.35和1.5之间。

roi 是感兴趣区域的矩形元组(x, y, w, h)。如果未指定,则等于图像矩形。仅操作 roi 内的像素。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css背景模糊效果

下面是效果下面是实现代码<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-…

线性回归模型训练-训练温度传感器数据预测模型

基础实验:训练温度传感器数据预测模型 任务描述:LM35是科创作品制作中常用的温度传感器(1)已知电压值, 如何得出实际温度值?(2)输出电压(Sensor)和真实温度(Temperature)有什么关 系?请借助大模型生成这两列数据的关系图 /目录学习:可以通过机器学习,训练传感器数据预测模型…

【分享】银行业如何实现内外网文件传输,保持核心竞争力?

数据要素是数字经济的重要基石,也是国家经济安全的关键要素。银行业数据因其数据体量大、数据类型多、涉及主体庞大及应用场景复杂等天然特征,在数据流转上面临风险和挑战,包括法律法规层面、安全层面、效率层面等。为响应和落实国家层面对于金融行业网络安全的建设要求,同…

SMT32的HEX文件里加入固件版本的方法(转)

使用MDK编译器,让STM32程序HEX文件中加入固件版本信息。 代码代码如下: //------------------------------------------------------------------------------#include <absacc.h>//------------------------------------------------------------------------------#d…

uniapp 自定义tabBar组件 custom-tab-bar

custom-tab-bar 自定义tabBar组件。 在小程序和App端,为提升性能,在 pages.json 里配置固定的原生tabBar。但在H5端,这一设计并不会提升性能。 同时,H5端尤其是PC宽屏,对tabBar的位置和样式有更灵活的需求,tabBar作为一级导航,更多的时候是在PC网页顶部而不是底部。 自定…

无法连接/访问 Linux虚拟的中的端口(Redis)

Could not connect to Redis at 192.168.137.132:6379: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。当出现 “Could not connect to Redis at 192.168.137.132:6379: No route to host” 错误,意味着客户端无法找到通往 Redis 服务器(IP 为 192…

钉钉发送告警(非@)

环境: OS:Centos 7 python:2.7[root@yunwei-zabbix-1000001-prd alertscripts]# more dingtalk_middleware.py #!/usr/bin/env python #-*- coding: utf-8 -*-import sys, json, urllib2def Dingtalk(message):content = messageurl = "https://oapi.dingtalk.com/robot/…

为GitLab配置Microsoft Graph作为邮件收发工具

先决条件Microsoft/Office 365订阅(Exchange是必须的)并添加一个gitlab专用的账户,本文使用E5开发者订阅 部署好的GitLab,参考上一篇文章步骤一、 配置Microsoft Entra 1. 注册应用程序 登录Azure门户,进入Microsoft Entra ID,选择管理-应用注册-新注册填写你想要的名称,…

C# 深度学习框架 TorchSharp 原生训练模型和图像识别-自定义网络模型和识别手写数字

目录使用 Torch 训练模型定义神经网络加载数据集创建网络模型定义损失函数训练识别手写图像 教程名称:使用 C# 入门深度学习 作者:痴者工良 教程地址:https://torch.whuanle.cn 电子书仓库:https://github.com/whuanle/cs_pytorch Maomi.Torch 项目仓库:https://github.co…

ZW3D二次开发_入门_Action与Ribbon菜单定制--转自 知乎 捣蛋龙

ZW3D二次开发_入门_Action与Ribbon菜单定制捣蛋龙 ​关注他5 人赞同了该文章​ 目录收起ZW3D二开入门目录 - 知乎 (zhihu.com)最新测试环境:2025 SP前言定制Ribbon菜单1.新建工作区2.定义"行为"3.定义自定义Ribbon文件4.编写策略文件5.编写引导程序6.多环境差异化策…

day4

简单图论与构造 A 考虑把权值为 2 的点看作给权值为 1 的点加一, 所以整个问题被拆成了两个部分:构造树和给节点加一 事实上,在第一部分时我们将树构造的尽量平衡是有好处,这个结论在第二个步骤中会得到证明 构造: Process DFS(father,ch,u,size):if size==0 then returnso…