一.环境
- QT5.14
- OpenCv 4.2.0
训练器使用的是OpenCV-3.4.1-x64版本的opencv_createsamples.exe和opencv_traincascade.exe文件。
高版本去除了这两个文件,有些低版本使用的时候会出现”应用程序无法正常启动(0xc000007b)。“的错误。(我之前使用OpenCv-3.3.1的时候就出现过)
下载链接:https://github.com/huihut/OpenCV-MinGW-Build
或者百度云:https://pan.baidu.com/s/1QnGZcaBoyGIIgCC_CvCR5g
提取码:hr3c
下载完成后,到对应路径的文件夹下找到bin文件夹,双击直接运行opencv_createsamples.exe和opencv_traincascade.exe这两个文件。要是没有弹出错误窗口的话就说明可以使用。
我的路径是这样子的D:\OpenCv\OpenCV-MinGW-Build-OpenCV-3.4.1-x64\x64\mingw\bin。
不能使用的话只能换其他低的版本。要是可以使用,就将bin文件夹的路径添加到环境变量(不会请百度),添加环境变量后就能在其他地方使用这两个exe文件了。
将opencv_createsamples.exe和opencv_traincascade.exe两个文件复制到一个新的文件夹中。改变了环境变量后一般需要重启。

二.样本准备
正样本(需要识别的物体)
负样本(不包含需要识别的物体的照片)
正样本需要同样大小,并且为灰度图;负样本只需要为灰度图即可。
在刚才的文件夹中建立pos、neg、xml三个文件夹,分别用于存放正样本、负样本和训练出来的xml文件。

我的正样本是使用电脑摄像头拍摄,然后opencv处理成8080大小的灰度图;负样本是使用手机的相册照片,经过opencv处理成500500的灰度图。
我的简单的处理代码如下:
Point pt(45,45);
int flag_neg = 0; // 0 是80*80正样本,1 是负样本, 2 为自动从目录中读取
void on_mouse( int event, int x, int y, int , void* )//鼠标的回调函数
{
if(event == EVENT_LBUTTONUP )
{
pt.x = x;
pt.y = y;
//cvCircle( src, pt, 2,cvScalar(255,0,0,0) ,CV_FILLED, CV_AA, 0 );
}
}
int main(int argc, char *argv[])
{
readTemplate();
tryFindresule();
VideoCapture v(0); //默认分辨率640*480
// v.set(CAP_PROP_FRAME_WIDTH, 1280.0); //设置分辨率

本文详细介绍了如何使用OpenCV 3.4.1版本的opencv_createsamples.exe和opencv_traincascade.exe创建级联分类器。从环境配置、样本准备、样本处理到训练xml文件的全过程,包括正负样本的获取、样本处理命令、生成vec文件及训练参数设置。
最低0.47元/天 解锁文章
2004

被折叠的 条评论
为什么被折叠?



