python调用astra进行人脸检测(使用CascadeClassifier)

1、简述

方法:使用opecv中,CascadeClassifier 级联分类器实现人脸检测,CascadeClassifier就是opencv下objdetect模块中用来做目标检测的级联分类器的一个类,它可以帮助我们检测例如车牌、眼睛、人脸等物体。它的大概原理就是判别某个物体是否属于某个分类。以人脸为例,我们可以把眼睛、鼻子、眉毛、嘴巴等属性定义成一个分类器,如果检测到一个模型符合定义人脸的所有属性,那么就认为它是一个人脸。
当我们预测的是离散值时,进行的是“分类”。对于只涉及两个类别的“二分类”任务,我们通常将其中一个类称为“正类”(正样本),另一个类称为“负类”(反类、负样本)。在人脸检测中,主要任务是构造能够区分包含人脸实例和不包含人脸实例的分类器。这些实例被称为“正类”(包含人脸图像)和“负类”(不包含人脸图像)。

2、基本步骤

  • 导入分类器文件

我们这次实现的人脸识别功能,需要先导入一个后缀名为.xml的分类器文件,它是前人已经创建好的分类器,我们可以直接使用

  • 读入图片

img1 = cv2.imread('Photos/MHT.png')

  • 转为灰度图

imgGray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
 

  • 调用detectMultiScale()函数进行检测

faces = face_cascade.detectMultiScale(cframe_data, 1.3, 5)

  • 绘制方框

        for (x, y, w, h) in faces:

            cframe_data = cv2.rectangle(cframe_data, (x, y), (x+w, y+h), (255, 0, 0), 2)

3、代码

from openni import openni2
import numpy as np
import cv2def mousecallback(event,x,y,flags,param):if event==cv2.EVENT_LBUTTONDBLCLK:print(y, x, dpt[y,x])if __name__ == "__main__": openni2.initialize()dev = openni2.Device.open_any()print(dev.get_device_info())depth_stream = dev.create_depth_stream()depth_stream.start()color_stream = dev.create_color_stream()color_stream.start()#cap = cv2.VideoCapture(0)cv2.namedWindow('depth')cv2.setMouseCallback('depth',mousecallback)cv2.namedWindow('color')cv2.setMouseCallback('color',mousecallback)#使用目标检测的级联分类器face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')#导入分类器文件while True:frame = depth_stream.read_frame()dframe_data = np.array(frame.get_buffer_as_triplet()).reshape([480, 640, 2])dpt1 = np.asarray(dframe_data[:, :, 0], dtype='float32')dpt2 = np.asarray(dframe_data[:, :, 1], dtype='float32')dpt2 *= 255dpt = dpt1 + dpt2cv2.imshow('depth', dpt)cframe = color_stream.read_frame()cframe_data = np.array(cframe.get_buffer_as_triplet()).reshape([480, 640, 3])R = cframe_data[:, :, 0]G = cframe_data[:, :, 1]B = cframe_data[:, :, 2]cframe_data = np.transpose(np.array([B, G, R]), [1, 2, 0])cframe_data = cframe_data.copy()#调用detectMultiScale()函数进行检测faces = face_cascade.detectMultiScale(cframe_data, 1.3, 5)#绘制矩形框标记人脸for (x, y, w, h) in faces:cframe_data = cv2.rectangle(cframe_data, (x, y), (x+w, y+h), (255, 0, 0), 2)cv2.imshow('color', cframe_data)key = cv2.waitKey(1)if int(key) == ord('q'):breakdepth_stream.stop()color_stream.stop()dev.close()

4、截图

感谢Musk美照,早晚高低提一辆特斯拉,respect!!

 

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

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

相关文章

JS类的继承和实现原理详解

一:前言 各位小伙伴在日常开发中,相信一定遇到过Class这种写法。这代表在JS中创建了一个类,并且可以通过这个类去 new 出一个新的对象。其实在JS中,这个类和java中的类是没有区别的,同样具有属性,方法&…

使用vue3前端开发的一些知识点

Vue 3 是一种流行的 JavaScript 框架,用于构建用户界面。它是 Vue.js 框架的第三个主要版本,具有许多新特性和性能改进。下面是 Vue 3 的一些常用语法和概念的详细介绍: 创建 Vue 实例: 在 Vue 3 中,你可以通过创建一个…

前端多媒体处理工具——ffmpeg的使用

写在前面 在前端领域,FFmpeg 是一个非常有用的工具,它提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种色彩格式转换、多种采样率转换、多种码率切换等。可以在多种操作系统安装使用。 安装 下载FFmpeg 在网…

深入探讨 Golang 中的追加操作

通过实际示例探索 Golang 中的追加操作 简介 在 Golang 编程领域,append 操作是一种多才多艺的工具,使开发人员能够动态扩展切片、数组、文件和字符串。在这篇正式的博客文章中,我们将踏上一段旅程,深入探讨在 Golang 中进行追加…

【VSCode】解决Open in browser无效

问题描述: 在VSCode中无论是点击右键,选择在默认浏览器中打开,还是按快捷键alt b都没有反应。 解决办法: 右击文件 --> 在文件资源管理器中显示 右击文件,选择属性 点击更改 选择用默认浏览器打开 最后 此时…

音乐制作软件 Studio One 6 mac中文版软件特点

Studio One mac是一款专业的音乐制作软件,该软件提供了全面的音频编辑和混音功能,包括录制、编曲、合成、采样等多种工具,可用于制作各种类型的音乐,如流行音乐、电子音乐、摇滚乐等。 Studio One mac软件特点 1. 直观易用的界面&…

Defender Antivirus占用资源怎么禁止

前言 有时Defender Antivirus 突然磁盘IO很高。导致机器卡得很,开发代码很不方便,本文就介绍如何禁用这个服务。 操作 下载Defender Control https://www.sordum.org/9480/defender-control-v2-1/ 这是当前的最新版本。下载不了就用云盘地址 &#x…

Android Studio(2022.3.1)设置阿里云源-新旧版本

新版本 #settings.gradle.ktsmaven { url uri("https://maven.aliyun.com/repository/public/") }maven { url uri("https://maven.aliyun.com/repository/google/") }maven { url uri("https://maven.aliyun.com/repository/jcenter/") }ma…

git commit报错:running pre-commit hook: lint-staged

报错截图: 报错信息: running pre-commit hook: lint-staged 解决方式: 在项目(vue)的package.json文件中,查找 “husky” 部分,并确认其下的 “pre-commit” 钩子是否正确地引用了 lint-staged。 其中配置示例如下&a…

大数据测试用例分析

基于大数据分析,对业务系统产生的日志进行智能分析,能够识别日志中的接口、参数、业务流,并依据分析的结果生成测试用例。 问题与背景 业务复杂 业务系统的复杂性,对测试人员的业务能力提出严格要求,加重测试成本。 …

开源网安受邀参加数字安全高峰论坛,为数字经济发展保驾护航

​10月19日,“提升数字安全技术,护航数字经济发展”高峰论坛在常州创意产业园圆满完成。本次论坛由常州国家高新区管委会、常州市工业和信息化局、常州市大数据管理中心主办,聚焦“数据安全”主题,邀请了超百位专家及企业代表共同…

FROZEN TRANSFORMERS IN LANGUAGE MODELS ARE EFFECTIVE VISUAL ENCODER LAYERS

本文是LLM系列文章,针对《FROZEN TRANSFORMERS IN LANGUAGE MODELS ARE EFFECTIVE VISUAL ENCODER LAYERS》的翻译。 语言模型中的冻结Transformer是有效的视觉编码器层 摘要1 引言2 相关工作3 方法:用于视觉编码的冷冻LLMTransformer4 LLMTransformer在…

5种常用的冲突解决方法

1、撤退/回避:从实际或潜在冲突中退出,将问题推迟到准备充分的时候,或将问题推给其他人员解决; 2、缓和/包容:强调一致而非差异,为维持和谐与关系而退让一步,考虑其他方面的需求; …

华为云HECS服务器下docker可视化(portainer)

一、docker安装 华为云HECS安装docker-CSDN博客 二、portainer安装 portainer地址:Portainer: Docker and Kubernetes Management Platform 当前portainer分CE(开源版) 和 BE(商业版),用CE即可 1 创建…

Vue3开始

1. Vue3简介 2020年9月18日,Vue.js发布版3.0版本,代号:One Piece(海贼王) 经历了:4800次提交、40个RFC、600次PR、300贡献者 官方发版地址:Release v3.0.0 One Piece vuejs/core 截止2023年…

c++23中的新功能之十七显示this的应用

一、显示this 在前面的文章中分析了显示this(Deducing This),具体的内容请移步《c23新功能之二语法中的Deducing This》,本篇对显示this对实际应用中的一些完善和更新形式进行分析说明,抛砖引玉。 二、CRTP的应用 在前面的学习中,学过CRTP…

ARM映像文件组成

引言 ARM编译器将各种源文件(汇编文件、C语言程序文件、C语言程序文件)编译生成ELF格式的目标文件(后缀为.o文件,以下将目标文件简称为.o文件),.o文件经过连接器,和C/C运行时库一起编译生成ELF格…

如何解决香港服务器使用的常见问题

​  站长们在选择香港服务器租用时会考虑到它的各种性能以及稳定性,这是必须的。但是使用过程中还有些问题也不容忽视,比如:带宽资源是否短缺,是否存在安全漏洞,连接是否正常等这些问题也要考虑到。 香港服务器使用中…

php判断是否是email格式

要判断一个字符串是否是有效的电子邮件地址,你可以使用正则表达式和PHP内置函数来完成。以下是一个示例代码: $email "exampleexample.com"; // 你要检查的电子邮件地址// 使用正则表达式检查电子邮件格式 if (filter_var($email, FILTER_VA…

数据库备份与恢复(实战mysqldump+bin-log)

一、为什么要进行数据库备份? 常见数据库备份的应用场景如下: 数据丢失应用场景: 人为操作失误造成某些数据被误操作 软件 BUG 造成部分数据或全部数据丢失 硬件故障造成数据库部分数据或全部数据丢失 安全漏洞被入侵数据恶意破坏 非数据丢…