当前位置: 首页 > news >正文

Kotlin OpenCV 图像图像50 Haar 级联分类器模型

Kotlin OpenCV 图像图像50 Haar 级联分类器模型

  • 1 OpenCV Haar 级联分类器模型
  • 2 Kotlin OpenCV Haar 测试代码

1 OpenCV Haar 级联分类器模型

Haar级联分类器是一种用于对象检测(如人脸检测)的机器学习算法。它由Paul Viola和Michael Jones在2001年提出,通常用于实时检测,因为它速度快且性能良好。

基本原理解释
Haar特征Haar特征是从图像中提取的简单矩形特征,通过比较相邻区域的像素值来描述图像的局部特征。
常见的Haar特征有边缘特征、线条特征和四边形特征。
每个Haar特征值由区域内像素的加权和计算得到,具体公式为特征值 = 黑色区域像素值总和 - 白色区域像素值总和。
积分图(Integral Image)积分图是一种图像表示方法,方便快速计算矩形区域的像素和。
通过积分图,可以在常数时间内计算任意矩形区域的像素和。
级联分类器(Cascade Classifier)级联分类器由一系列弱分类器(如决策树桩)组成,每个弱分类器使用一个或多个Haar特征进行分类。
弱分类器按顺序排列,每个分类器将图像区域分为正例(目标对象)和负例(非目标对象)。
如果某个区域被认为是负例,则立即停止检测;如果被认为是正例,则继续传递到下一个分类器。
这种级联结构大大提高了检测速度,因为大部分非目标区域在早期就被排除。

OpenCV Haar 级联分类器模型
在这里插入图片描述

文件夹用途特点
lbpcascades包含基于局部二值模式 (Local Binary Patterns, LBP) 的级联分类器文件。LBP 是一种有效的纹理特征描述符,在对象检测中表现良好。计算效率高: LBP 特征计算简单,因此在对象检测时速度较快。
鲁棒性: 对光照变化和其他环境变化有较好的鲁棒性。
常用分类器: 人脸检测等。
hogcascades包含基于方向梯度直方图 (Histogram of Oriented Gradients, HOG) 特征的级联分类器文件。HOG 特征在检测行人等对象时表现良好。特征描述能力强: HOG 特征能够捕捉对象的形状和外观信息。
高检测精度: 尤其在检测行人方面有较高的精度。
haarcascades_cuda包含利用 CUDA 加速的 Haar 特征级联分类器文件。这些分类器利用 GPU 进行加速计算,提高检测速度。 类似于 haarcascades 文件夹中的文件,是加速版本。高性能: 利用 GPU 的并行计算能力,大幅提升检测速度。
需要支持 CUDA 的 GPU: 需要系统安装 CUDA 并支持相应的 GPU 硬件。
haarcascades包含基于 Haar 特征的级联分类器文件。这是 OpenCV 中最常用的对象检测分类器之一。历史悠久: Haar 级联分类器是最早用于人脸检测的算法之一。
计算复杂度适中: 相比 LBP 更复杂,但特征描述能力也更强。
广泛应用: 用于人脸、眼睛、微笑等对象的检测。

haarcascades_cuda 和 haarcascades 文件的主要区别在于它们是否利用 CUDA 加速进行对象检测。

haarcascades/haarcascades_cuda 文件夹用途
haarcascade_eye.xml用于检测人眼。
haarcascade_eye_tree_eyeglasses.xml用于检测戴眼镜的人眼。
haarcascade_frontalcatface.xml用于检测猫的正面脸部。
haarcascade_frontalcatface_extended.xml用于检测猫的正面脸部(扩展版本)。
haarcascade_frontalface_alt.xml用于检测人脸的另一个版本。
haarcascade_frontalface_alt2.xml用于检测人脸的另一个替代版本。
haarcascade_frontalface_alt_tree.xml用于检测人脸的另一个替代版本(树状结构)。
haarcascade_frontalface_default.xml用于检测人脸的默认版本。
haarcascade_fullbody.xml用于检测人体的完整体。
haarcascade_lefteye_2splits.xml用于检测左眼(两部分)。
haarcascade_license_plate_rus_16stages.xml用于检测俄罗斯车牌(16阶段)。
haarcascade_lowerbody.xml用于检测人体的下半身。
haarcascade_profileface.xml用于检测人脸的侧面(侧脸)。
haarcascade_righteye_2splits.xml用于检测右眼(两部分)。
haarcascade_russian_plate_number.xml用于检测俄罗斯车牌号码。
haarcascade_smile.xml用于检测微笑。
haarcascade_upperbody.xml用于检测人体的上半身。
hogcascades文件夹用途
hogcascade_pedestrians.xml用于在图像或视频中检测行人。
lbpcascades文件夹用途
lbpcascade_frontalcatface.xml用于检测猫的正面脸部。
lbpcascade_frontalface.xml用于检测人脸的正面部分。
lbpcascade_frontalface_improved.xml用于检测人脸的正面部分,改进版本。
lbpcascade_profileface.xml用于检测人脸的侧面部分。
lbpcascade_silverware.xml用于检测银器(如刀、叉、勺等餐具)。

2 Kotlin OpenCV Haar 测试代码

package com.xu.com.xu.imageimport org.opencv.core.MatOfRect
import org.opencv.core.Point
import org.opencv.core.Scalar
import org.opencv.highgui.HighGui
import org.opencv.imgcodecs.Imgcodecs
import org.opencv.imgproc.Imgproc
import org.opencv.objdetect.CascadeClassifier
import java.io.File
import java.util.*object FaceDetect {init {val os = System.getProperty("os.name")val type = System.getProperty("sun.arch.data.model")if (os.uppercase(Locale.getDefault()).contains("WINDOWS")) {val lib = if (type.endsWith("64")) {File("lib\\opencv\\x64\\" + System.mapLibraryName("opencv_java4100"))} else {File("lib\\opencv\\x86\\" + System.mapLibraryName("opencv_java4100"))}System.load(lib.absolutePath)}}@JvmStaticfun main(args: Array<String>) {face()}private fun face() {val facebook = CascadeClassifier("lib/opencv/data/haarcascades/haarcascade_frontalface_alt2.xml")val image = Imgcodecs.imread("C:\\Users\\hyacinth\\Desktop\\1.png")val face = MatOfRect()facebook.detectMultiScale(image, face)val reacts = face.toArray()println("匹配到 " + reacts.size + " 个人脸")for (i in reacts.indices) {Imgproc.rectangle(image,Point(reacts[i].x.toDouble(), reacts[i].y.toDouble()),Point((reacts[i].x + reacts[i].width).toDouble(), (reacts[i].y + reacts[i].height).toDouble()),Scalar(0.0, 0.0, 255.0), 2)Imgproc.putText(image,i.toString(),Point(reacts[i].x.toDouble(), reacts[i].y.toDouble()),Imgproc.FONT_HERSHEY_SCRIPT_SIMPLEX,1.0,Scalar(0.0, 0.0, 255.0),2,Imgproc.LINE_AA,false)}HighGui.imshow("人脸识别", image)HighGui.waitKey(0)}}

在这里插入图片描述

相关文章:

Kotlin OpenCV 图像图像50 Haar 级联分类器模型

Kotlin OpenCV 图像图像50 Haar 级联分类器模型 1 OpenCV Haar 级联分类器模型2 Kotlin OpenCV Haar 测试代码 1 OpenCV Haar 级联分类器模型 Haar级联分类器是一种用于对象检测&#xff08;如人脸检测&#xff09;的机器学习算法。它由Paul Viola和Michael Jones在2001年提出…...

嗖嗖移动业务大厅(Java版)

首先对此项目说明一下&#xff0c;我只完成了项目的基本需求&#xff0c;另外增加了一个用户反馈的功能&#xff0c;但是可能项目中间使用嗖嗖这个功能还有一些需要完善的地方&#xff0c;或者还有一些小bug&#xff0c;就当给大家参考一下了&#xff0c;希望谅解。代码我也上传…...

hcia复习笔记

一、OSI 七层模型 应用层&#xff1a;为应用程序提供服务&#xff0c;如文件传输、电子邮件等。 表示层&#xff1a;数据格式转换、加密解密、压缩解压缩。 会话层&#xff1a;建立、维护和管理会话。 传输层&#xff1a;提供端到端的可靠或不可靠的数据传输服务&#xff0…...

pycharm中安装、使用扩展工具,以QT Designer为例

pycharm中安装、使用扩展工具&#xff0c;以QT Designer为例 第一步&#xff0c;下载QT Designer安装包。找到QT Designer.exe所在位置&#xff0c;复制路径 第二步&#xff0c;打开Pycharm&#xff0c;选择Setting&#xff0c;找到扩展工具&#xff08;External Tools&#xf…...

【Rust光年纪】Rust语言实用库汇总:从机器翻译到全文搜索引擎

优秀的Rust语言库探索&#xff1a;机器翻译、音频编解码和全文搜索引擎 前言 Rust语言在近年来迅速崛起&#xff0c;成为了一种备受欢迎的系统级编程语言。随着其生态系统的不断丰富&#xff0c;涌现出了许多优秀的库和工具。本文将重点介绍几个用于Rust语言的重要库&#xf…...

学习笔记 - 二极管的参数与选型

二极管 普通二极管&#xff1a; 1N4148(高频开关二极管) 整流二极管&#xff1a; 1N4007 1A 1000V1N5408 3A 1000V 肖特基二极管 &#xff08;白线边为阴极&#xff09; SS14 SS34 SS54 常见肖特基二极管参数 快恢复二极管 FR107 FR207 FR307 UF4007 可以用快恢复二…...

PMP--冲刺--易混概念

文章目录 十大知识领域一、整合管理项目管理计划与项目文件的区分&#xff1a; 二、范围管理三、进度管理赶工与快速跟进的区分&#xff1a;赶工增加资源&#xff0c;以最小的成本代价来压缩进度工期&#xff1b;快速跟进&#xff0c;将正常情况下按顺序进行的活动或阶段改为至…...

Resolving Maven dependencies

Maven是一种项目管理和构建工具&#xff0c;通常用于Java项目。这个过程包括下载项目所需的所有外部库和插件&#xff0c;并将它们添加到项目的构建路径中。具体来说&#xff0c;它正在处理名为“AAS_byBasyx”的项目或模块的依赖项。这种任务通常在你打开一个新的Maven项目或更…...

【Spring】SSM框架整合Spring和SpringMVC

目录 1.项目结构 2.项目的pom.xml文件 3.spring.xml和springMVC配置文件 4.database.properties和mybatis.xml配置文件 5. 代码编写 6.测试整合结果 1.项目结构 首先创建一个名为ssm_pro的Mavew项目&#xff0c;然后再在主目录和资源目录下&#xff0c;创建如下所示的结…...

优维2024年中思考:大模型赋予新一代运维的“非产品性”启示

近年来&#xff0c;人工智能在各个行业的应用大幅增加&#xff0c;人工智能技术取得重大进步的领域之一是IT运维。 去年四季度&#xff0c;优维科技敏锐地提出“新一代运维核心系统提供商”的战略新定位&#xff0c;决定将“DevOps及运维”回归到“运维”本身&#xff0c;但我…...

【中药网络药理学】筛选细胞衰老和预后相关基因(附分类代码和画图代码)

1、衰老相关基因 从HAGR和msigdb数据获取细胞衰老相关基因&#xff0c;将两者取交集后构建基因蛋白互作网络 HAGR数据库 该库本身提供了下载链接&#xff0c;我在下载后对其进行了清洗 msigdb数据库 以"aging"作为关键词&#xff0c;Search Filters中collection…...

华为的流程体系

缘由 2010年&#xff0c;华为销售额为1850亿元&#xff0c;其中国际市场占65%&#xff0c;净利润238亿元。当时&#xff0c;公司员工达11万人&#xff0c;公司处理合同达5万多个&#xff0c;290万个订单&#xff0c;大量的工作是手工处理&#xff0c;没有统一的流程支持&#…...

算法——长度最小的子数组209 对比代码随想录题解中对于result取值为Integer.MAX_VALUE的思考

具体解题过程可看代码随想录&#xff0c;我主要是对于为什么result也就是子数组和初始化要为Integer.MAX_VALUE有一个疑惑&#xff0c;为什么不是其他值&#xff0c;经过思考后我发现: 情况一&#xff1a;如果result为负数的话是不符合数组长度取值的一个规范的。 情况二&…...

图像处理案例03

HOGSVM数字识别 1 . 步骤2 . 代码 1 . 步骤 读入数据&#xff0c;把数据划分为训练集和测试集用hog提取特征用SVM训练数据测试、评价模型保存模型加载模型&#xff0c;应用模型 2 . 代码 import os import cv2 import sklearn import numpy as np from skimage.feature impo…...

【Kubernetes】k8s集群中kubectl的陈述式资源管理

目录 一.k8s集群资源管理方式分类 1.陈述式资源管理方式 2.声明式资源管理方式 二.陈述式资源管理方法 三.kubectl命令 四.项目生命周期 1.创建 kubectl create命令 2.发布 kubectl expose命令 3.更新 kubectl set 4.回滚 kubectl rollout 5.删除 k…...

串---顺序串实现

顺序串详解 本文档将详细介绍顺序串的基本概念、实现原理及其在 C 语言中的具体应用。通过本指南&#xff0c;读者将了解如何使用顺序串进行各种字符串操作。 1. 什么是顺序串&#xff1f; 顺序串是一种用于存储字符串的数据结构&#xff0c;它使用一组连续的内存空间来保存…...

吴恩达机器学习WEEK2

COURSE1 WEEK2 多维特征 在线性回归中&#xff0c;往往特征不止一个&#xff0c;而是具有多维特征 例如&#xff0c;在预测房价的例子中&#xff0c;我们知道更多的信息&#xff1a; x 1 x_1 x1​&#xff1a;房屋的面积 x 2 x_2 x2​&#xff1a;卧室的数目 x 3 x_3 x3​&a…...

yield and generator in python

首先&#xff0c;假设大家都对于pytyhon的List comprehension的使用有了一定经验&#xff08;它可以用于list&#xff0c;set&#xff0c;和dict哦&#xff09; 不熟悉的参考介绍&#xff1a; Comprehending Python’s Comprehensions – dbader.org generator generator是哦…...

spring原理(自学第六天)

Aware 接口及 InitializingBean 接口 今天将会学到Aware 接口及 InitializingBean 接口 我们可以先了解他们的作用&#xff1a; 1. Aware 接口用于注入一些与容器相关信息, 例如 a. BeanNameAware 注入 bean 的名字 b. BeanFactoryAware 注入…...

案例分享—国外优秀ui设计作品赏析

国外UI设计创意迭出&#xff0c;融合多元文化元素&#xff0c;以极简风搭配动态交互&#xff0c;打造沉浸式体验&#xff0c;色彩运用大胆前卫&#xff0c;引领界面设计新风尚 同时注重用户体验的深度挖掘&#xff0c;通过个性化定制与智能算法结合&#xff0c;让界面不仅美观且…...

【C++】简约与清晰的编程艺术

C编程的艺术&#xff1a;简约与清晰的实践之道 一、基础之美&#xff1a;基本类型与数据结构的力量二、函数与库类的艺术三、简约与清晰的实践之道 在C这一既古老又充满活力的编程语言世界里&#xff0c;程序员们常常面临着一个重要的选择&#xff1a;是追求代码的极致抽象与封…...

java之WIFI信号模块

开发步骤分为以下几点&#xff1a; 1.在 AndroidManifest 中声明相关权限&#xff08;网络和文件读写权限&#xff09; 声明权限: <uses-permission android:name"android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name"android.…...

Mybatis面试

Mybatis 面试 1、Mybatis 的执行流程是什么&#xff1f; 1、读取MyBatis配置文件&#xff1a;mybatis-config.xml 加载运行环境 和 映射文件 2、构造会话工厂 SqlSessionFactory &#xff08;全局只有一个&#xff09; 3、会话工厂创建SqlSession对象&#xff08;项目与数据…...

Centos 8系统xfs文件系统类型进行扩容缩容 (LVM)

Centos 8系统xfs文件系统类型进行扩容缩容 &#xff08;LVM&#xff09;,xfs分区类型是不支持正常缩容&#xff0c;只能强制缩容 1.磁盘情况&#xff1a;2.缩容home分区1.备份home数据&#xff1a;2.查找使用 /home 的进程&#xff1a;3.终止这些进程&#xff1a;4.卸载 /home …...

C语言基础知识之函数指针和指针函数

函数指针和指针函数 函数指针和指针函数指向函数的指针返回指针值的函数指针函数和函数指针的区别 问题1_1代码1_1结果1_1 函数指针和指针函数 指向函数的指针 用函数指针变量调用函数 可以用指针变量指向整型变量、字符串、数组&#xff0c;也可以指向一个函数。一个…...

【Unity】web gl inputFied 中文输入,同时支持TextMeshInputFied,支持全屏

同时支持TextMeshInputFied&#xff0c;支持全屏。 使用github包【WebGLInput】&#xff1a;https://github.com/kou-yeung/WebGLInput 需要资源的在这里也可以下载 https://download.csdn.net/download/weixin_46472622/89600795 用于unity web gl 中文输入&#xff0c;只需…...

vue3+vite全局引入less变量和函数

需要在vite配置 plugins: [css: {preprocessorOptions: {less: {additionalData: import "./src/styles/variables.module.less"; import "./src/views/Visualization/component/ViewportCom/px2viewport.less";,javascriptEnabled: true}}}, ]多个文件按…...

H81002S 1.7mm网络变压器:BMS汽车蓝牙接收器中的超薄共模电感科技

华强盛导读&#xff1a;在当今这个日新月异的汽车科技领域&#xff0c;每一处细节都蕴含着创新与突破。作为电动汽车心脏的电池管理系统&#xff08;BMS&#xff09;&#xff0c;其高效稳定的运行不仅关乎续航与安全&#xff0c;更是智能化驾驶体验的基石。而在这背后&#xff…...

C语言.回调函数

回调函数 回调函数也是一个函数。与一般函数直接调用区别在于&#xff0c;使用回调函数的过程&#xff0c;是一个函数将另一个函数作为参数调用。而被用来调用的那个函数&#xff0c;就是回调函数。 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针&#xff08;地…...

《从零开始:使用Python构建简单Web爬虫》

前言 随着互联网信息的爆炸性增长&#xff0c;如何高效地获取和处理这些数据变得越来越重要。Web爬虫作为一种自动化工具&#xff0c;可以帮助我们快速抓取所需的网页内容。本文将介绍如何使用Python编写一个简单的Web爬虫&#xff0c;并通过实例演示其基本用法。 准备工作 …...

论坛类型的网站怎么做/官网站内推广内容

一、今天在写东西时使用了mysl中的length&#xff08;&#xff09;方法来检测数据长度&#xff0c;发现一个问题&#xff1a;当变量为纯英文字符时没有问题&#xff0c;但是中间夹杂着汉字时&#xff0c;这个结果就不一样了。这是因为在mysql中一个汉字的length为3导致的。 二…...

企业网站建设美丽/百度seo如何快速排名

一、步骤 1.创建一个Canvas 2.对Canvas进行初始化&#xff0c;记得把Game视图的分辨率调成和Canvas里面设置的一样的分辨率960X640 3.创建一个Image的UI节点作为Canvas的子节点&#xff0c;名字叫bg&#xff0c;设置宽高为1920X1080&#xff0c;Image组件里面的Color设置为黑色…...

柳州网站建设33/seo简介

1、Ubuntu14.04 下载,打开Ubuntu官网,找到下载页面,选择要下载版本,单击“下载”。 2、跳过上面那些乱七八糟的东西 3、单击下载“download now” …...

淘宝做网站推广怎么样/头条号权重查询

Reflect对象与Proxy对象一样&#xff0c;也是 ES6 为了操作对象而提供的新 API Reflect设计目的&#xff1a; 将Object对象的一些明显属于语言内部的方法&#xff08;比如Object.defineProperty&#xff09;&#xff0c;放到Reflect对象上。修改某些Object方法的返回结果&#…...

苏州党员两学一做网站/免费制作网站的平台

关于作者前滴滴出行技术专家&#xff0c;现任OPPO文档数据库mongodb负责人&#xff0c;负责oppo千万级峰值TPS/十万亿级数据量文档数据库mongodb内核研发及运维工作&#xff0c;一直专注于分布式缓存、高性能服务端、数据库、中间件等相关研发。后续持续分享《MongoDB内核源码设…...

网络规划是干什么的/seo的作用

大家都知道&#xff0c;用document.getElementById(‘element).style.xxx可以获取元素的样式信息&#xff0c;可是它获取的只是DOM元素style属性里的样式规则&#xff0c;对于通过class属性引用的外部样式表&#xff0c;就拿不到我们要的信息了。 DOM标准里有个全局方法getComp…...