首先说一下如何获取opencv_createsamples.exe和opencv_traincascade.exe

这两个软件在opencv安装包里是没有的,只有下载opencv以及opencv_contrib源码自己编译才会生成这两个可执行程序,编译opencv和opencv_contrib有很多教程,我就不多说了, 这里我也把我编译好的文件放在码云上了,下载下来就可以直接运行 ,编译的版本是opencv-3.4.1

https://gitee.com/lizaozao/opencv341_bin

如果你想要自己编译得到这两个文件,可以参考我的另一篇文章https://blog.csdn.net/MangoHHHH/article/details/115184344?spm=1001.2014.3001.5501在win10上编译opencv+opencv_contrib,注意了:你要这两个文件的话选择较低版本的opencv,4.1.0是没有的,我试过3.4.1版本是有这两个文件的,而且按照上面链接的来能够成功编译,如果你想试试其他版本的,也可以。编译成功后在build/ install / bin文件夹下就可以找到了

一、如何训练自己的分类器

1.准备数据

数据分为正样本负样本

正样本就是你要识别的部分,负样本就是不包含你要识别的部分,正负样本放在不同的两个文件夹posdata(正样本)和negdata(负样本)文件夹里

例如对于下面的图片:

在这里插入图片描述
我们切下正样本放置于正样本文件夹中:

正样本
那么除了正样本外的所有背景均可剪切下来当做负样本放置于负样本文件夹中。

这里要注意:正负样本都需要处理成灰度图,所有正样本需要resize到同样的大小,例如20×20,或者24×24,负样本则不需要resize,可以大小不同。

做好的正样本:

在这里插入图片描述
做好的负样本:

2.分别为正样本和负样本创建描述文件

为正样本创建描述文件格式文件posdata.txt,即在posdata文件夹里新建posdata.txt文件,然后在cmd里cd到posdata文件夹下,执行

dir /b > posdata.txt

对于负样本也同样在negdata文件夹里新建negdata.txt文件,然后在cmd里cd到negdata文件夹下,执行

dir /b > negdata.txt

生成后还需要一定的修改

对于posdata.txt

打开posdata.txt, 使用替换功能,把所有的bmp 换成 bmp 1 0 0 20 20(这里bmp是因为我的图片格式为bmp,20 20 是因为我把所有正样本resize成20×20的了,如果你不一样,就需要修改相应的位置

然后在posdata.txt文件里搜索 ‘posdata.txt’ ,将这一行删除。
修改完以后是这样的:

对于negdata.txt

首先在negdata.txt文件里搜索 ‘negdata.txt’ ,将这一行删除。然后使用替换功能把相对路径换成绝对路径,例如:

到这里数据就准备好了,可以开始训练了

3.开始训练

1.使用opencv_createsamples.exe创建样本:

在cmd里cd到程序所在的文件夹下( cmdcdexe)
不会的话就直接在 opencv341_bin-master 文件夹里新建一个txt文件 在文件里输入 start cmd 保存后将txt后缀改成bat,双击运行就行啦!
如图:
在这里插入图片描述
然后执行下面指令:

opencv_createsamples.exe -info posdata\posdata.txt -vec detect_number.vec -bg negdata\negdata.txt -num 1661 -w 20 -h 20

参数解释:
-info:就是你之前搞的posdata.txt的位置,可以直接使用绝对地址避免出错,绝对地址就是从C:或者D:开始的地址
-vec 是你生成vec文件的位置和名称
-bg 就是你之前搞的negdata.txt的位置,同样也可以直接使用绝对地址
-num 你正样本的数量,你有多少正样本就写多少
-w -h 是你正样本的宽高

执行以后结果为:

在这里插入图片描述
2.使用opencv_traincascade.exe开始训练:

opencv_traincascade.exe -data xml_file -vec detect_number.vec -bg negdata\negdata.txt -numPos 1500 -numNeg 1169 -numStages 20 -featureType HAAR -w 20 -h 20

参数解释:
-data 就是你存放训练好的xml文件的文件夹,这个一定要事先创建好
-vec 是你之前生成vec文件
-bg 就是你之前搞的negdata.txt的位置
-numPos 你正样本的数量,这里我填的比正样本数量稍微少一点,我有1661个正样本,但是填的的1500,这是为避免训练出错
-numNeg 你负样本的数量,有多少填多少
-numStages 训练步数
-featureType ,就是特征类型,有三种,不过另外两种忘记了,而且也是HAAR最常用
-w -h 是你正样本的宽高

开始训练后如图:

在这里插入图片描述
训练完成后在xml_file文件夹里会生成一系列xml文件,最后能用的文件是cascade.xml

最后使用测试程序试试我们训练好的分类器的效果:

import cv2
detector = cv2.CascadeClassifier('cascade.xml')# 分类器位置
cap = cv2.VideoCapture(0)
cap.set(3,1920) #设置分辨率
cap.set(4,1080)
while True:
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = detector.detectMultiScale(gray, 1.1, 5)
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
    cv2.imshow('frame', img)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

效果如图:

在这里插入图片描述
这就OK啦,如果有什么不明白的地方,可以跟我交流
QQ:172561916

首先说一下如何获取opencv_createsamples.exe和opencv_traincascade.exe这两个软件在opencv安装包里是没有的,只有下载opencv以及opencv_contrib源码自己编译才会生成这两个可执行程序,编译opencv和opencv_contrib有很多教程,我就不多说了,这里我也把我编译好的文件放在码云上了,下载下来就可以直接运行,编译的版本是opencv-3.4.1https://gitee.com/lizaozao/opencv341_bin如何训练
级联分类器包括两部分:训练和检测。 这个指南是描述如何训练分类器:准备训练数据和运行训练程序。 [官网]:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/user_guide/ug_traincascade.html 重点注意事项 OpenCV中有两个程序可以训练级联分类器opencv_haartraining and opencv_trai...
opencv_createsamples.exe 如何下载 说明:opencv_createsamples.exe 可以在 opencv 官网 https://opencv.org/releases/ OpenCV – 3.4.12 版本中下载安装后在bin目录中找到; 下载地址:https://nchc.dl.sourceforge.net/project/opencvlibrary/3.4.12/opencv-3.4.12-vc14_vc15.exe?viasf=1 https://pan.ba..
感慨:关于 opencv_traincascaded.exeopencv_createsamplesd.exe 是如何生成的,网上的资料很少,基本没什么教程,Google只说个大概,按照他们的方法基本不适合我现在这个版本。折腾了几天,终于搞定了,成功编译,而且不报错。 一.准备工具 一.准备工具 Visual Studio 2013, OpenC...
文章目录1.首先了解一点opencv前置知识点2.相关文件的准备3.图片和图片路径的处理程序(python)4.训练5.训练结果6.对训练的.xml文件测试 1.首先了解一点opencv前置知识点 (1)Opencv下载和导入Visual studio 2022 https://mydreamambitious.blog.csdn.net/article/details/124902276 (2)visual studo 2022中使用Opencv人脸检测 https://mydreamambitious.
CSDN-Ada助手: 非常感谢博主的创作,这篇博客内容非常丰富,涉及到双目相机标定、极线矫正、SIFT匹配以及深度估计等多个方面,让我受益匪浅。博主的文章写作风格清晰明了,让人很容易理解和掌握相关知识。希望博主能够继续分享更多的知识,让我们能够更好地学习和成长。再次感谢博主的辛勤付出,期待更多精彩的文章! 为了方便博主创作,提高生产力,CSDN上线了AI写作助手功能,就在创作编辑器右侧哦~(https://mp.csdn.net/edit?utm_source=blog_comment_recall )诚邀您来加入测评,到此(https://activity.csdn.net/creatActivity?id=10450&utm_source=blog_comment_recall)发布测评文章即可获得「话题勋章」,同时还有机会拿定制奖牌。 opencv训练自己的xml分类器以及如何获取opencv_createsamples.exe和opencv_traincascade.exe 17*351: OpenCV(3.4.1) Error: Bad argument (Can not get new positive sample. The most possible reason is insufficient count of samples in given vec-file. ) in CvCascadeImageReader::PosReader::get, file C:\application\opencv\opencv\sources\apps\traincascade\imagestorage.cpp, line 158 Ubuntu18.04 安装AirSim仿真插件以及载入地图(Airsim-v1.3.1+UE4.25) 学习纪实: 你好,我也是这个问题,请问有什么解决办法吗? Ubuntu18.04 安装AirSim仿真插件以及载入地图(Airsim-v1.3.1+UE4.25) 学习纪实: 作者你好,为什么我运行UE4Editor时无法打开UE4,弹出一个ok,点击之后UE4就关闭了,这是什么情况呀?