opencv_traincascade 找不到正样本

标签 opencv

我知道这已经被要求死了,但我已经跟踪了每个链接和解决方案,但都无济于事。我用 10 个原始正图像训练一个级联,并从每个图像创建 200 个样本。我有 544 张底片。根据这个:How to train cascade properly ,它应该可以工作,但是我的在开始第一阶段之前就失败了。我试过增加/减少原始样本以及制作了多少新样本,但这并没有什么不同。

PARAMETERS:
cascadeDirName: classifier
vecFileName: samples.vec
bgFileName: negatives.txt
numPos: 1800
numNeg: 544
numStages: 13
precalcValBufSize[Mb] : 2048
precalcIdxBufSize[Mb] : 2048
stageType: BOOST
featureType: HAAR
sampleWidth: 24
sampleHeight: 34
boostType: GAB
minHitRate: 0.999
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100
mode: ALL

===== TRAINING 0-stage =====
<BEGIN
POS OpenCV Error: Bad argument (Can not get new positive sample. The most possible reason is insufficient count of samples in given vec-file. 

关于这个主题的大量冲突使我更加困惑,例如这篇文章 http://abhishek4273.com/2014/03/16/traincascade-and-car-detection-using-opencv/指出消极的应该多于积极的,而第一个链接则相反。

最佳答案

根据你的问题,我可以理解两种不同的情况:

  1. 您有 2000 个样本。如果是这种情况并且 numPos 为 1800,则说明您使用了过多的正样本,并且可能无法填满每个阶段。

  2. 您在 createsamples 函数中输入了 200。结果是 200 个样本。因此,当算法尝试从 .vec 文件中读取新行时,它会失败,因为只有 200 行而不是 1800 行。

我建议您在执行createsamples 函数时,在cvShowVecSamples 函数之后使用,这样您就可以确定您有多少样本。

我为我的英语道歉,因为它不是我的第一语言,我希望我的回答能帮助解决你的问题。

关于opencv_traincascade 找不到正样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25859677/

相关文章:

opencv - OpenMP边缘检测过滤器并行性:需要更长的时间

opencv - openCV中Point2f的结构是怎样的?

android - OpenCV,安卓 : Detecting an object from an image instead of real-time detection

opencv - 在VS2013 Express Desktop上运行C++程序时出现“opencv_highgui249.dll is missing”消息

python - 将 scipy.ndimage.rotate 与 alpha channel 一起使用时图像中的伪影

python - 在 Python 中使用 OpenCV 进行模板匹配

android - DJI Phantom 3 相机在 Android Studio 中出现 openCV 问题

opencv - JavaCV中从IplImage获取数组

python - 如何从两个图像重建场景的3D

python - RuntimeError 在 openCV 中使用 cv.SaveImage