安卓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--------------------------------------------------------------------------------------------------------------

目录
相关文章
|
3月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
2天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
21 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
14天前
|
前端开发 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
111 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
12天前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
35 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
27天前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
75 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
1月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
36 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
2月前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
77 19
|
3月前
|
IDE Java 开发工具
移动应用与系统:探索Android开发之旅
在这篇文章中,我们将深入探讨Android开发的各个方面,从基础知识到高级技术。我们将通过代码示例和案例分析,帮助读者更好地理解和掌握Android开发。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和技巧。让我们一起开启Android开发的旅程吧!
|
2月前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
91 14
|
2月前
|
Java Linux 数据库
探索安卓开发:打造你的第一款应用
在数字时代的浪潮中,每个人都有机会成为创意的实现者。本文将带你走进安卓开发的奇妙世界,通过浅显易懂的语言和实际代码示例,引导你从零开始构建自己的第一款安卓应用。无论你是编程新手还是希望拓展技术的开发者,这篇文章都将为你打开一扇门,让你的创意和技术一起飞扬。

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 4
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 6
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 7
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 10
    【01】opencv项目实践第一步opencv是什么-opencv项目实践-opencv完整入门以及项目实践介绍-opencv以土壤和水滴分离的项目实践-人工智能AI项目优雅草卓伊凡