安卓OpenCV开发(五)小狗识别

简介: 安卓OpenCV开发

使用OpenCV进行小狗脸蛋识别

新鲜?不,还是换汤不换药,其实原理和人脸识别一样,只是换了一下识别模型而已。
基础知识可以回顾我之前写的文章:
OpenCV导入
OpenCV人脸检测
OpenCV竖屏检测
OpenCV人脸识别
狗脸识别,得现有训练模型的数据源:
链接:https://pan.baidu.com/s/1OxA6vGw5kvUs_V6GXVsnCg
提取码:ur82
识别器工具:
链接:https://pan.baidu.com/s/1my6NqIJ_MTLBulD29Az7-g
提取码:7fh4
首先,训练数据源,分为正样本和负样本。先区分正负样本的文件夹,结构如下:
训练目录结构结构

cmd执行的指令
harresult训练集合生成的结果文件夹,需要自行创建
negative负样本文件夹
positive正样本文件夹

开始发车

(一)创建正负样本的目录说明文件

win电脑cmd窗口,可以输入dir/s/b>1.txt用于生成目录说明文件
(1)下图为正样本目录说明文件截图
正样本目录说明文件

第一列是图片路径;
第二列是图片中能检测出的样本表数量
第三第四列是图像的坐标,(0,0)就行;
第五第六列是图像宽和高,需要注意是一样的,宽高比需要一样的。

(2)下图为负样本目录说明文件截图
负样本目录说明文件
只需目录说明即可

(二)指令生成正样本vec训练文件,指令如下:

.\opencv_createsamples -info E:\work\opencvtrain\dog\test\positive\1.txt -vec E:\work\opencvtrain\dog\test\mysqmples_344.vec -num 100 -bgcolor 0 -bgthresh 0 -w 24 -h 24

执行截图如下:
执行截图

(三)执行指令生成最后的训练集合

执行流程截图:
运行截图

最后,在harresult文件夹,会生成训练所得文件,截图如下:
训练结果截图
cascade.xml文件即为训练结果,可以作为OpenCV项目中的分类器构建时的数据源输入,从而检测相关数据。

备注:
1、注意正负目录描述文件的路径格式
2、注意我图片中,指令的相关目录,请结合实际理解
最后附上狗脸检测结果图片一张:
狗脸检测

最后附上训练参数说明

【-info】 就是跟存放正样本图片目录位置相同的描述文件的路径,可用txt,dat等格式保存,每一行的内容为:xxx.jpg nums left_x left_y width heght。
比如:samples_1.jpg 1 0 0 20 20这样,就是指某个正样本是samples_1.jpg的图片,图片中有1个目标区域,区域的左上角坐标为(0,0),区域的宽度为20像素,长度为20像素。注意样本图片和这里的参数相符。
【-img】如果你要通过一张图片的扭曲形变成多张图片作为样本,就填写这个参数,参数的内容为要扭曲的图片的路径。填入后,-info参数不再有效。
【-vec】要生成用于训练的vec文件的路径,内容为:xxx/xxx/xxx/xxx.vec
【-bg】 如果省略,则使用bgcolor的值填充作为背景。就是跟存放负样本图片(背景图片)目录位置相同的描述文件的路径,可用txt,dat等格式保存,,每一行的内容为:xxx.jpg。这里要注意的是,不要填入图片的完整路径,不然会报错。但训练样本opencv_traincascade也需要传入一个-bg参数,但那个参数的描述文件每一行是要用完整路径的,这有点怪。
【-num】要创建的样本的数量,使用-info生成时,不要比你准备的正样本图片数量大就行了
【-bgcolor】这是创建样本是样本扭曲函数中用来决定像素是有效还是作为背景过滤的基本值,因为操作的是灰度图,所以这个值0范围是~255。
【-bgthresh】决定背景掩码的实际取值范围为bgcolor-bgthresh ——bgcolor-bgthresh
【-inv】【-randinv】这是样本生成时,是否需要反相或随机反相,这个在车牌这样的数字中就需要,比如说白底黑字的车牌和蓝底白字的车牌,两者生成的样本是相反的,前者数字是黑色,后者数字是白色。所以这个参数按你实际需要使用吧。
【-maxidev】一个用于生成前景(有效像素区域)灰度值的常数值,实际样本的前景灰度值会根据这个参数结合随机数产生多种不同的灰度值。
【-maxxangle】对样本图片的x轴方向的扭曲的最大弧度,X轴即是图片水平方向的旋转。
【-maxyangle】对样本图片的y轴方向的扭曲的最大弧度,Y轴即是图片竖直方向的旋转。
【-maxyangle】对样本图片的z轴方向的扭曲的最大弧度,Z轴即是垂直于图像平面的方向的旋转(可理解为旋转轴是一条穿过显示器的垂线)。
【-show】样本创建期间,是否通过imshow显示出每一个生成的样本图片出来。
【-w】要创建的样本图片的宽度,后面的训练样本步骤要使用和这时一样的值,不然会报错
【-h】要创建的样本图片的高度,后面的训练样本步骤要使用和这时一样的值,不然会报错
【-data】
训练的分类器的存储目录
【-vec 】
正样本文件,由open_createsamples.exe生成,正样本文件后缀名为.vec
【-bg】
负样本说明文件,主要包含负样本文件所在的目录及负样本文件名
【-numPos】
每级分类器训练时所用到的正样本数目,应小于vec文件中正样本的数目,具体数目限制条件为:numPos+(numStages-1) numPos(1-minHitRate)<=vec文件中正样本的数目
【-numNeg】
每级分类器训练时所用到的负样本数目,可以大于-bg指定的图片数目
【-numStages】
训练分类器的级数,强分类器的个数
【-precalcValBufSize】
缓存大小,用于存储预先计算的特征值,单位MB
【-precalcIdxBufSize 】
缓存大小,用于存储预先计算的特征索引,单位MB
【-baseFormatSave 】
仅在使用Haar特征时有效,如果指定,级联分类器将以老格式存储
【-stageType 】
级联类型,目前只能取BOOST
【-featureType】
训练使用的特征类型,目前支持的特征有Haar,LBP和HOG
【-w】
训练的正样本的宽度,Haar特征的w和h一般为20,LBP特征的w和h一般为24,HOG特征的w和h一般为64
【-h 】
训练的正样本的高
【-bt】
训练分类器采用的Adaboost类型,Adaboost分为Getle Adaboost,Real Adaboost,Discrete Adaboost,Logit Adaboost,训练中默认采用Getle Adaboost
【-minHitRate】
影响每个强分类器阈值,每一级分类器最小命中率,表示每一级强分类器对正样本的的分类准确率
【-maxFalseAlarm】
最大虚警率,影响弱分类器的阈值,表示每个弱分类器将负样本误分为正样本的比例,一般默认值为0.5
【-weightTrimRate】
0-1之间的阈值,影响参与训练的样本,样本权重更新排序后(从小到大),从前面累计权重小于(1-weightTrimRate)的样本将不参与下一次训练,一般默认值为0.95
【-maxDepth】
每一个弱分类器决策树的深度,默认是1,是二叉树(stumps),只使用一个特征。
【-maxWeakCount】
每级强分类器中弱分类器的最大个数,当FA降不到指定的maxFalseAlarm时可以通过指定最大弱分类器个数停止单个强分类器
【-Haar】
特征,CvHaarFeatureParams继承于CvFeatureParams
【-mode】
值为BASIC、CORE、ALL三种,根据值不同采用不同的Haar特征,BASIC是基本的Haar特征(垂直),CORE是所有的上下Haar特征,ALL是使用所有的Haar特征(包括垂直和45度)
【-LBP】
特征,CvLBPFeatureParams继承于CvFeatureParams
【-HOG】
特征,CvHOGFeatureParams继承于CvFeatureParams

that's all--------------------------------------------------------------------------------------------------------------

目录
相关文章
|
18天前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
224 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
28天前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
105 6
|
3月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
197 11
|
3月前
|
移动开发 Java 编译器
Kotlin与Jetpack Compose:Android开发生态的演进与架构思考
本文从资深Android工程师视角深入分析Kotlin与Jetpack Compose在Android系统中的技术定位。Kotlin通过空安全、协程等特性解决了Java在移动开发中的痛点,成为Android官方首选语言。Jetpack Compose则引入声明式UI范式,通过重组机制实现高效UI更新。两者结合不仅提升开发效率,更为跨平台战略和现代架构模式提供技术基础,代表了Android开发生态的根本性演进。
116 0
|
7月前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
1430 77
|
4月前
|
安全 Java Android开发
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
191 0
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
|
8月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
479 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
8月前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
272 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
8月前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
206 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
9月前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
390 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程

热门文章

最新文章