python ,OpenCV : unable to make custom LBP cascade using opencv_traincascade

标签 python opencv image-processing classification image-recognition

我在 mac os x 10.7.5 上使用通过 macports 安装的 opencv 2.4.4 和 python 2.7.5。

我想训练一个级联来寻找男性正面。但是我收到了 terminate called throwing an exceptionAbort trap: 6 错误。我请求 SO 社区帮助我找出可能出了什么问题。

负片(背景)图像取自谷歌:googleImages_noFaces(293 张图像)

正面图片取自Karolinska数据库:trainingSet(70张图片)

我创建了一个指示背景图像相对位置的文本文件:bgDesc.txt

我还创建了一个文本文件,指示相对位置、图像中正实例的数量(始终为 1)和对象的边界区域(即整个图像):maleDesc.txt

所有这些文件都可以从here 下载。 .

文件的组织形式是这样的:

/trainingSet
    image1.jpg
    image2.jpg
    .
    .
    .

/googleImages_noFaces
    image1.jpg
    image2.jpg
    .
    .
    .

/cascadeFiles

maleDesc.txt
bgDesc.txt

当我使用 opencv_createsamples 时,使用以下行成功创建了一个 maleDesc.vec 文件:

opencv_createsamples -vec maleDesc.vec -info maleDesc.txt -bg bgDesc.txt -num 70 -w 24 -h 24

如果我使用 -show 参数,我可以看到创建了 24x24 像素的图像。

然后我试试

opencv_traincascade -data cascadeFiles -vec maleDesc.vec -bg bgDesc.txt -numPos 70 - numNeg 293 -numStages 1 -precalcValBufSize 500 -precalcIdxBufSize 500 -featureType LBP -w 24 -h 24

这给我一个错误。

我尝试了不同的 -numPos 值,例如 10、20 等等,直到 70 以及不同的 -numNeg 值,例如 30、60 等等最多 293。我尝试使用小于 numNeg 值的 numPos 值,甚至使用大于 numPos 值的值。我还尝试了不同的 -numStages 值,例如 1、5、10、20 和 100,但在所有这些尝试中我都遇到了同样的错误。

我没有尝试过 -minHitRate、-maxFalseAlarmRate、-weightTrimRate、-maxDepth、-maxWeakCount 的不同值,因为我不太了解它们如何影响 opencv_traincascade 算法的行为。

非常感谢任何帮助:)

最佳答案

terminate called throwing an exceptionAbort trap: 6 错误是由于拼写错误造成的。我设法复制了行为并在下面的代码中验证了它

opencv_traincascade -data cascadeFiles -vec maleDesc.vec -bg bgDesc.txt -numPos 70 - numNeg 293 -numStages 1 -precalcValBufSize 500 -precalcIdxBufSize 500 -featureType LBP -w 24 -h 24

-numNeg 之间有一个空格,应该是 -numNeg

此外,即使样本非常少,训练也会继续进行,但 numPos 必须是 numNeg 的两倍

有关 haar 和 lbp 培训过程的更多说明,请参阅此 SO 答案:https://stackoverflow.com/a/16834901/1463143

由于打字错误,两周和 50 个赏金声望被浪费了:|

关于 python ,OpenCV : unable to make custom LBP cascade using opencv_traincascade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19464834/

相关文章:

python - 强调图像中的蓝色

image-processing - 图像格式 NV12 存储在内存中

python - 从声音文件中检测频率

python - Django 添加管理命令而不安装为应用程序

c++ - 找到没有极值的平均值

Java-OpenCV 错误 : OpenCV Error: Assertion failed (dims <= 2 && step[0] > 0)

opencv - 如何对二值化动物足迹图像进行去噪和提取 ROI

python - 将多个数据帧与互补缺失值组合起来的最有效方法

python pickle 给出 "AttributeError: ' str' 对象没有属性 'write' "

Cloud DataFlow 中的 Python 依赖项,requirements.txt 在本地工作,但在工作线程上不起作用