首页 > 其他分享 >如何在OriginBot上实现人脸识别

如何在OriginBot上实现人脸识别

时间:2024-01-22 21:01:22浏览次数:29  
标签:OriginBot 人脸识别 self cv2 分类器 如何 人脸 图像 image

转载自古月居

编辑:东岸因为@一点人工一点智能

01  人脸识别

大家在生活中经常会看到在我们进入商城时,门口会有相机在拍摄我们,并且会统计有多少人数进入商店,它是如何进行人数量统计的呢?

这就是是计算机视觉领域的一项关键技术——人脸识别,它使计算机系统能够自动检测、识别和验证图像或视频中的人脸。

人脸识别通过分析图像中的人脸特征来执行各种视觉任务。因为其重要性,所以解决方法很多,如卷积神经网络(CNN)、级联分类器等来提取和比对人脸特征。这些算法能够处理各种光照、姿势和表情条件下的人脸,从而实现高度准确的识别。

如何在OriginBot上实现人脸识别_人脸识别

图片来源:https://blog.csdn.net/u013117791/article/details/128834780

02  硬件环境

OriginBot 智能机器人

PC:Ubuntu (≥20.04) + ROS2 (≥Foxy)

03  代码

import cv2
    import cv_bridge
    import rclpy
    from rclpy.node import Node
    from sensor_msgs.msg import Image


    class FaceDetection(Node):
        def __init__(self):
            super().__init__('face_detection')
            self.classifier_path = "haarcascade_frontalface_default.xml"


            self.bridge = cv_bridge.CvBridge()
            self.face_cascade = cv2.CascadeClassifier(self.classifier_path)
            self.image_sub = self.create_subscription(Image, '/image_raw', self.image_callback, 10)
            self.pub = self.create_publisher(Image, '/camera/process_image', 10)


        def image_callback(self, msg):
            image = self.bridge.imgmsg_to_cv2(msg, 'bgr8')
            gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
            faces = self.face_cascade.detectMultiScale(
                gray,
                scaleFactor=1.2,
                minNeighbors=3,
                minSize=(20, 20)
            )


            if len(faces) > 0:
                for (x, y, w, h) in faces:
                    cv2.rectangle(image, (x, y), (x + w, y + h), (255, 0, 0), 2)


            self.pub.publish(self.bridge.cv2_to_imgmsg(image, 'bgr8'))


    def main(args=None):
        rclpy.init(args=args)
        face_detection = FaceDetection()
        rclpy.spin(face_detection)
        face_detection.destroy_node()
        rclpy.shutdown()


    if __name__ == '__main__':
        main()

04  代码分析

• Haar Cascade 分类器:Haar Cascade 分类器是一种对象检测器,通过训练来识别特定的对象,这里主要用于人脸检测。

self.classifier_path = “haarcascade_frontalface_default.xml” 指定了已经训练好的人脸分类器的路径。

• ROS2节点初始化:rclpy.init(args=args) 和 rclpy.shutdown() 分别用于初始化和关闭ROS2节点。

• 图像订阅和发布:
self.image_sub = self.create_subscription(Image, ‘/image_raw’, self.image_callback, 10) 用于订阅原始图像。

self.pub = self.create_publisher(Image, ‘/camera/process_image’, 10) 用于发布处理后的图像。

• 图像处理回调函数:image_callback(self, msg) 处理订阅的图像,首先将ROS消息转换为OpenCV图像。

• 将图像转换为灰度图像:gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)。

• 使用 Haar Cascade 分类器检测人脸:faces = self.face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=3, minSize=(20, 20))。

• 如果检测到人脸,用矩形标记出来:cv2.rectangle(image, (x, y), (x + w, y + h), (255, 0, 0), 2)。最后,将处理后的图像发布出去:self.pub.publish(self.bridge.cv2_to_imgmsg(image, ‘bgr8’))。

• ROS2节点主函数:def main(args=None): 主函数初始化节点,并通过 rclpy.spin(face_detection) 进行节点的运行。

05  灰度图像的重要性

使用opencv实现人脸识别已经是一个特别成熟的技术了,这里抛砖引玉希望大家出一个更nice的版本呀!

1)为什么要使用 Haar Cascade 分类器进行人脸检测,Haar Cascade分类器的几个参数是什么含义?

Haar Cascade 分类器是一种经过训练的对象检测器,特别适用于检测面部特征,如人脸和眼睛。它具有高度准确的检测性能,因此广泛用于计算机视觉任务。Haar Cascade 分类器的优势在于它可以在不同尺度和旋转下检测对象,而且速度相对较快。

scaleFactor 参数用于指定每个图像尺度上要缩小图像的比例。这使得分类器能够检测不同尺寸的对象,而不仅仅适用于特定尺寸的对象。通过在不同尺寸上运行分类器,可以检测到远处和近处的对象,使检测更加全面。

minNeighbors 参数用于指定检测到目标后,要保留的邻近目标的最小数量。这有助于去除重叠的检测结果。较大的值会过滤掉一些检测结果,以确保只返回高置信度的检测结果。这有助于减少误报。

2)为什么需要将输入图像转换为灰度图像?

Haar Cascade 分类器通常在灰度图像上运行,因为灰度图像只包含亮度信息,而不包含颜色信息。这简化了图像处理,并使分类器能够更好地识别对象的边缘和纹理特征。此外,灰度图像的计算量更小,因此处理速度更快。

标签:OriginBot,人脸识别,self,cv2,分类器,如何,人脸,图像,image
From: https://blog.51cto.com/u_15921966/9370079

相关文章

  • 浏览器的回流(重排)和重绘,以及如何优化
    浏览器的回流(重排)和重绘 1、浏览器解析HTML生成DOM树,解析CSS生成CSSDOM树2、如何DOM树和CSSDOM树合并构建渲染树3、然后经过回流(回流主要是计算元素的形状、位置大小)4、然后再经过重绘(重绘就是转化为屏幕上的实际像素,来达到页面展现的目的)  引起回流的动作有: 浏......
  • 如何备份已经安装并设置AutoHotkey脚本编程环境的Windows电脑系统分区 2024.01.22
     如何备份已经安装并设置AutoHotkey脚本编程环境的Windows电脑系统分区2024.01.22第1步:邮购并制作银灿IS903可启动U盘,量产Emulation-CD-ROM所用ISO镜像选用从www.firpe.cn下载的PE光盘镜像。第2步:正确安装电脑软件并调整电脑各项设置备份硬盘分区表和启动扇区信息转移个......
  • 使用云服务器被攻击,该如何防止ddos攻击
    目前我们运行各项网络业务都离不开服务器,现在使用比较多的都是云服务器了。大家都知道,目前市场上用的云服务器大多数都是没有带什么防护了,那么用云服务器的时候,如果遭受到了ddos攻击,该怎么办,云服务器应该怎么去防ddos攻击呢?今天,德迅云安全就给大家讲讲使用云服务器该如何防止ddos攻......
  • 侵权冒用层出不穷,企业网站如何赢得用户信任?
    近期,哈尔滨火爆“出圈”带火文旅市场,各地文旅部门纷纷“出手”,多措施进行引流,“花式”揽客大力发展旅游产业。河南文旅就是其中之一。在抖音APP搜索关键词“河南文旅”后,出现了一批个人账号。其中,“河南旅行推荐官”粉丝24.8万,“河南文旅推荐官”粉丝34.3万,“河南文旅(小号)”粉丝2.8......
  • 快乐学Python,如何使用Python处理文件(csv、Excel、html)数据?
    在前面的文章中,我们了解了Python爬虫的一些内容。截止到现在,我们已经可以将需要的数据通过爬虫获取,并保存到CSV文件中。在有了数据集后,接下来我们就开始了解如何将数据集的内容加载到Python中。虽然在之前也有了解简单的读取csv数据。但是存在两个问题:只能读取csv文件,但数据分析......
  • 如何从 0 开始学 Python 自动化测试开发(一)
    如何从0开始学Python自动化测试开发(一)Python:「TIOBE’s2018年度编程语言」Python作为大数据工程和AI的主流开发语言,近年来一直保持强劲的上升趋势。即使目前AI领域还没有大量的成功商业案例(盈利的)出现,Python语言就已经空前火爆了。2019新年伊始,Python果然......
  • 如何查看苹果手机的CPU型号?
    摘要本文将介绍如何在苹果手机上查看CPU型号。通过简单的设置操作,您可以轻松地获取您的iPhone的CPU型号信息。此外,我们还将介绍一些克魔助手可以提供的其他功能,如内存监控、GPU性能监控和网络抓包等,以帮助您优化和提升iOS应用的性能。 引言iPhone是苹果公司于2007年1月9日开......
  • 微信小程序如何获取当前日期时间
    Hello大家好!我是咕噜铁蛋,获取当前日期时间是小程序中经常会用到的一个功能。因此,在本文中,我通过科技手段给大家收集整理了下,今天我将向大家介绍如何在微信小程序中获取当前日期时间的方法,并分享一些实用技巧和注意事项。一、获取当前日期时间的方法在微信小程序中,获取当前日期时间......
  • 如何降低股票投资中的决策误判概率(一):我们为什么会产生决策误判
    如果希望在股票投资领域赚钱,需要先知道如何才能亏的一无所有。我从小就对人们为什么会产生决策误判,为什么会做出正确决策这两个问题始终非常感兴趣,工作和接触投资以后,愈发加深,我决定把对这两个问题的感悟写下来以做记录。这篇只记录关于投资领域的决策误判问题。第一,情绪问题......
  • 如何查看华为的大模型(AI模型),华为官方的mindspore下的大模型???
    由于华为官方的mindspore网站的设计比较反人性话,操作起来十分的复杂,因此如果想要在华为的官方网站上查找这个华为的官方大模型还是比较困难的,为此直接给出链接地址。PS.要注意,华为的AI官方网站经常性的进行修改,所以这个链接只能保证一段时间内可以使用,如果未来网站升级修改,就......