0

我正在尝试使用 haar_cascade 训练一些分支徽标。我所做的是,我拍摄了 2500 张 500 x 500 的平方图片来填充opencv_createsamples. 然后我将它们生成为:

opencv_createsamples -info 'logo.info' -vec '../logo.vec' -bg '../Negatives/bg.txt' -w 24 -h 24 -num 2500

在我的中,logo.info我有与每张图片的相对路径相对应的线条,其1 0 0 500 500含义是“在 (0,0) 和 (500, 500) 之间有一个对象”

然后我将级联训练为:

opencv_traincascade -data 'cascade/' -vec '../logo.vec' -bg '../Negatives/bg.txt' -numPos 2500 -numNeg 3019 -numStages 25 -featureType LBP -w 24 -h 24

使用这些参数:

参数:

cascadeDirName:级联/

vecFileName: ../logo.vec

bgFileName: ../Negatives/bg.txt

数量:2500

numNeg: 3019

阶段数:25

precalcValBufSize[Mb]:256

precalcIdxBufSize[Mb]:256

舞台类型:BOOST

特征类型:LBP

样本宽度:24

样品高度:24

升压类型:GAB

最低命中率:0.995

最大假警报率:0.5

重量修剪率:0.95

最大深度:1

最大弱计数:100

我有两种错误:

  1. OpenCV 错误:在 cvPreprocessIndexArray,文件 /tmp/buildd/opencv-2.3.1/modules/ml/src/inner_functions.cpp,第 432 行终止调用中的参数值之一超出范围(未选择组件/输入变量!)抛出'cv :: Exception'实例后what():/tmp/buildd/opencv-2.3.1/modules/ml/src/inner_functions.cpp:432:错误:(-211)未选择组件/输入变量!在函数 cvPreprocessIndexArray

在此处输入图像描述

...

在此处输入图像描述

当您在图像数量-num参数之间没有显着差异时,通常会发生此错误。所以,让我们尽量少给100!

好吧,当我将参数调整为不从数组中输出时,我得到与图像相同类型的输出,但出现此错误:

OpenCV 错误:写入中的断言失败(tempNode->left),文件 /tmp/buildd/opencv-2.3.1/modules/traincascade/boost.cpp,第 628 行终止在抛出“cv::Exception”实例后调用什么(): /tmp/buildd/opencv-2.3.1/modules/traincascade/boost.cpp:628: 错误: (-215) tempNode->left in function write

中止

我试过了:

  • 更改图像的命运尺寸(24x24、36x36...)
  • 更改-mode参数。
  • 尝试放置 #positiveSamples < #negativeSamples 和 #positiveSamples > #negativeSamples

我必须做的是用 LBP(不是 HAAR)进行强制性培训。有人有任何线索吗?

先感谢您。

4

1 回答 1

0

卸载并重建 OpenCV 解决了这个问题。

于 2015-06-29T13:00:48.000 回答