opencv3.3版本训练自己的物体分类器

opencv3.3版本训练自己的物体分类器Opencv 训练自己分类器注 此文是我整理了网上的各方资料汇集而成 由于在实践中遇到了很多坑 所以把自己的成功训练的经验写下来做个笔记给大家做个参考 本文所使用 opencv 版本为 3 3 下载链接 https opencv org releases page 3 1 准备训练样本图片 1 1 样本的采集 样本图片最好使用灰度图 且最好根据实际情况做一定的预处理 样本数量

Opencv训练自己分类器

注:此文是我整理了网上的各方资料汇集而成,由于在实践中遇到了很多坑,所以把自己的成功训练的经验写下来做个笔记给大家做个参考,本文所使用 opencv版本为3.3 下载链接:Releases – OpenCV

1.准备训练样本图片

1.1样本的采集:

      样本图片最好使用灰度图,且最好根据实际情况做一定的预处理;样本数量越多越好,尽量高于1000,样本间差异性越大越好

正负样本比例为1:3最佳;尺寸为20×20最佳。

1.1.1正样本

        训练样本的尺寸为20*20(opencv推荐的最佳尺寸),且所有样本的尺寸必须一致。如果不一致的或者尺寸较大的,可以先将所有样本统一缩放到20*20   

 以下就是我用来训练的正样本:

 opencv3.3版本训练自己的物体分类器

1.1.2负样本

 opencv3.3版本训练自己的物体分类器

 这里要提醒一下,虽然负样本就是样本中不存在正样本的内容。但也不能随意的找些图片来作为负样本,比如什么天空,大海,森林等等。最好是根据不同的项目选择不同的负样本,比如一个项目是做机场的人脸检测,那么就最好从现场拍摄一些图片数据回来,从中采集负样本。其实正样本的采集也应该这样。不同的项目,就采集不同的正样本和负样本。因为项目不同,往往相机的安装规范不同,场景的拍摄角度就不同。

1.1.3 准备好工作目录

negdata目录: 放负样本的目录

posdata目录: 放正样本的目录

xml目录: 新建的一个目录,为之后存放分类器文件使用

negdata.txt: 负样本路径列表

posdata.txt: 正样本路径列表

pos.vec: 后续自动生成的样本描述文件

opencv_createsamples.exe: 生成样本描述文件的可执行程序(opencv自带)

opencv_haartraining.exe: 样本训练的可执行程序(opencv自带)

将下图中的所有文件拷贝到样本同级目录

opencv3.3版本训练自己的物体分类器

1.1.4生成样本描述文件

1,生成正样本描述文件

进入posdata目录

执行dir /b/s/p/w *.jpg > pos.txt

2,生成负样本描述文件

进入negdata目录

执行dir /b/s/p/w *.jpg > neg.txt

打开正负样本描述文件如图:

 opencv3.3版本训练自己的物体分类器

将jpg全部替换成下面的格式

opencv3.3版本训练自己的物体分类器opencv3.3版本训练自己的物体分类器

图中划线处为图片像素大小

将正负样本描述文件拷贝到与opencv_createsamples.exe文件同一目录

1.1.5生成.vec文件

opencv_createsamples.exe -vec pos.vec -info pos.txt -num 18500 -w 20 -h 20

opencv_createsamples.exe -vec neg.vec -info neg.txt -num 10500 -w 50 -h 50

 

说明:

-info,指样本说明文件

-vec,样本描述文件的名字及路径

-num,总共几个样本,要注意,这里的样本数是指标定后的20×20的样本数,而不是大图的数目,其实就是样本说明文件第2列的所有数字累加

-w -h指明想让样本缩放到什么尺寸。这里的奥妙在于你不必另外去处理第1步中被矩形框出的图片的尺寸,因为这个参数帮你统一缩放!(我们这里准备的样本都是20*20)

 

1.1.6训练样本

新建文件traincascade.bat

opencv_traincascade.exe -data xml -vec pos.vec -bg neg.txt -numPos 500 -numNeg 656 -numStages 20 -w 20 -h 20 -mode ALL

pause

复制进去保存

pos.txtneg.txt改回如图格式(注意:这一步至关中重要

 opencv3.3版本训练自己的物体分类器

然后双击traincascade.bat进行训练

说明:

opencv3.3版本训练自己的物体分类器

 点击训练后会出现如图所示代表正确训练中

 opencv3.3版本训练自己的物体分类器

训练结束后会在xml目录下生成如图文件(其中cascade.xml就是我们训练得到的分类器)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207750.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午1:10
下一篇 2026年3月19日 下午1:10


相关推荐

  • ES5详解_es6配置表

    ES5详解_es6配置表目录1严格模式1.1使用1.2严格模式的作用1.3严格模式的规定2JSON2.1**`JSON.parse`**2.2`JSON.stringify`3对象扩展3.1Object.create3.2Object.defineProperties3.3对象本身的方法3.4Object.keys4数组扩展4.1indexof/lastIndexOf4.2forEach4.3map4.4filter5函数扩展1严格模式1.1使用在JS文件的头部或者函数的

    2025年7月22日
    6
  • 分治算法总结

    分治算法总结目录简介基本策略适用情况基本步骤复杂性分析依据分治法设计程序时的思维过程典型例子快速排序归并排序汉诺塔 简介在计算机科学中 分治法是一种很重要的算法 字面上的解释是 分而治之 就是把一个复杂的问题分成两个或更多的相同或相似的子问题 再把子问题分成更小的子问题 直到最后子问题可以简单的直接求解 原问题的解即子问题的解的合并 任何一个可以用

    2026年3月18日
    2
  • PyCharm激活码永久有效PyCharm2017.1.8激活码教程-持续更新,一步到位

    PyCharm激活码永久有效PyCharm2017.1.8激活码教程-持续更新,一步到位PyCharm激活码永久有效2017.1.8激活码教程-Windows版永久激活-持续更新,Idea激活码2017.1.8成功激活

    2022年6月19日
    39
  • 新睿云告诉您主流操作:分布式操作系统、批处理操作系统、分时操作系统优缺点分析!

    新睿云告诉您主流操作:分布式操作系统、批处理操作系统、分时操作系统优缺点分析!版权归作者所有 任何形式转载请联系作者 作者 Y M 来自豆瓣 来源 https www douban com note 一个完整的操作系统一般有管理文件系统 进程管理系统 内存系统 基本任务处理系统 极大部分共同组成资源管理器 因此我们可用操作系统成为与机器之间交流的接口 一般操作系统有以下几个类型 1 批处理操作系统这种类型的操作系统不直接与计算机

    2026年3月17日
    4
  • 升级openssl1.1.1(mix2s哪个版本不断流)

    发现很多OpenSSL的安全漏洞,并且是高危漏洞,所以准备升级CentOS6上的OpenSSL安装,解决安全漏洞;上OpenSSL的官网https://www.openssl.org/,查看一下最新的版本确认一下CentOS默认安装的OpenSSL的版本CentOS6使用的是1.0.1的版本,需要升级到最新的1.0.2s版本CentOS7使用的是1.0.2k版本,可以选…

    2022年4月13日
    49
  • 【AVD】简述某些视频在线播放时卡顿、本地播放时不卡顿的问题

    【AVD】简述某些视频在线播放时卡顿、本地播放时不卡顿的问题曾经在业务中遇到过这样的问题,我们编码出来的视频在Android、iOS端,使用ijkplayer内核的播放器播放时卡顿,甚至无法任意定位播放位置,将导致卡顿无法播放。今天,又有同事遇到类似的问题,而我发现,我只写过一个《用notepad++和Excel协助分析媒体文件包》,而并没有把当时遇到的问题分析记录下来。于是,在此简单说明一下。视频文件结构教科书般的教程、课程中对视频文件结构的描述非常详细,此处不赘述,简单地说,视频文件也是一种文件,是文件,就是一堆二进制数的集合,而且是一个.

    2025年11月25日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号