opencv-c++,训练自己的xml模型文件,超详解

在之前对于人脸识别和车牌识别中,使用模型是直接拿来用,对于如何实现生成xml文件,目前有许多教程,要么介绍就过于简单,要么就过于繁琐。此篇从个人理解角度出发,实现xml文件模型的实现,对眼镜盒识别。有错误之处,还望大佬多多指教。

1.在opencv中有自己特定的联级分类器,需要用到两个函数。

opencv_createsamples.exe和opencv_traincascade.exe。

对于此两个函数位置在于安装好的opencv文件夹中,D:\opencv-3.4.14.exe\opencv\build\x64\vc15\bin 可以参考一下,对于没有此两文件,也不用过于慌张,目前网上有许多是说下载cmake,进行配置,其实并没有如此复杂。直接下载3.4版本就行,新版本并没有此文件,需要编译好像是。这边提供opencv版本下载接口,OpenCV - Open Computer Vision Library,如果是小白没有配置过opencv,可以参考Visual Studio2022c++opencv的配置保姆级教程_visualc++2022-CSDN博客

2,现在解决了两个文件有无问题,来说说两个文件的用途和用法

opencv_createsamples.exe 用来创建.vec文件。

opencv_createsamples.exe程序的命令行参数:
-info <collection_file_name> 描述物体所在图像以及大小位置的描述文件。
 -vec <vec_file_name>输出文件,内含用于训练的正样本。
 -img <image_file_name>输入图像文件名(例如一个公司的标志)。
 -bg<background_file_name>背景图像的描述文件,文件中包含一系列的图像文件名,这些图像将被随机选作物体的背景。
-num<number_of_samples>生成的正样本的数目。
 -bgcolor<background_color>背景颜色(目前为灰度图);背景颜色表示透明颜色。因为图像压缩可造成颜色偏差,颜色的容差可以由-bgthresh指定。所有处于bgcolor-bgthresh和bgcolor+bgthresh之间的像素都被设置为透明像素。
-bgthresh <background_color_threshold>
 -inv如果指定该标志,前景图像的颜色将翻转。
-randinv如果指定该标志,颜色将随机地翻转。
 -maxidev<max_intensity_deviation>前景样本里像素的亮度梯度的最大值。
-maxxangle <max_x_rotation_angle>X轴最大旋转角度,必须以弧度为单位。
 -maxyangle <max_y_rotation_angle>Y轴最大旋转角度,必须以弧度为单位。
 -maxzangle<max_z_rotation_angle>Z轴最大旋转角度,必须以弧度为单位。

  • -show很有用的调试选项。如果指定该选项,每个样本都将被显示。如果按下Esc键,程序将继续创建样本但不再显示。
  •  -w <sample_width>输出样本的宽度(以像素为单位)。
  • -h<sample_height>输出样本的高度(以像素为单位)。

主要了解一下命令行语句: -info 是正样本记录文件 -vec 是生成vec文件的指定地址 -bg 是负样本记录文件 -num 是正样本数目 - w - h 是输出图像宽和高。不懂没事,下文会讲解。

D:\opencv-3.4.14.exe\opencv\build\x64\vc15\bin\opencv_createsamples.exe -info D:\opencv-3.4.14.exe\opencv\image\positive\info.txt -vec D:\opencv-3.4.14.exe\opencv\image\sample.vec -bg D:\opencv-3.4.14.exe\opencv\image\negitive\bg.txt -num 74 -w 24 -h 24

opencv_traincascade.exe 用来创建.xml文件。

opencv_traincascade.exe程序的命令行参数:

-data: 应存储经过训练的分类器的位置。此文件夹应事先手动创建
-vec: 带有正样本的 vec 文件(由 opencv_createsamples 实用程序创建)
-bg: 背景描述文件。这是包含负样本图像的文件
-numPos: 每个分类器阶段训练中使用的正样本数
-numNeg: 每个分类器阶段训练中使用的负样本数
-numStages: 要训练的级联阶段数
-precal

  • 28
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值