【问题标题】:OpenCV 2.4.9 - Traincascade problemsOpenCV 2.4.9 - Traincascade 问题
【发布时间】:2016-09-26 17:13:37
【问题描述】:

我使用 OSX 10.11。我是 opencv 的新手,我正在尝试训练一个简单(而且肯定很弱)的级联分类器来检测对象。我已经阅读了几个关于级联分类器的答案、帖子、指南、文档和教程,但我遇到了一些问题。我参考了这个指南:

guide

遵循 opencv 文档。现在我有 8 个 jpg 和我感兴趣的对象和 249 个背景图像(我知道这是一个糟糕的数据集,但这只是一种尝试)。

当我调用 opencv_createsamples 时,我注意到指南的作者生成了 1500 个样本,我也这样做了。这意味着从我的 8 张正面图像中生成 1500 个样本?

perl bin/createsamples.pl positives.txt negatives.txt samples 1500 "opencv_createsamples -bgcolor 0 -bgthresh 0 -maxxangle 1.1 -maxyangle 1.1 maxzangle 0.5 -maxidev 40 -w 80 -h 40"

请注意,在示例文件夹中,我只有 7 个 img*.jpg.vec 文件。他们不会是1500?当我打电话后:

g++ `pkg-config --libs --cflags opencv` -I. -o mergevec mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp cvhaartraining.cpp -lopencv_core -lopencv_calib3d -lopencv_imgproc -lopencv_highgui -lopencv_objdetect

我有一些错误,因为缺少“OpenCL”“AppKit”“QuartzCore”“QTKit”“Cocoa”。我在哪里可以检索这些?但是我试图继续并生成 samples.vec 文件。

find ./samples -name '*.vec' > samples.txt ./mergevec samples.txt samples.vec

最后我用这段代码训练我的分类器:

opencv_traincascade -data classifier -vec samples.vec -bg negatives.txt -numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 1000 -numNeg 249 -featureType LBP -w 80 -h 40 -precalcValBufSize 2048 -precalcIdxBufSize 4096

在阅读了一些帖子后,我选择了 -numPos 小于之前生成的 1500 个样本(但它们在哪里?)。当我开始训练时,陷入这种情况的人:

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

    当我尝试遵循相同(和其他)教程时,我学到了什么:

    • 是的,createsamples 将一个正数转换为多个正数。 *.vec 文件在一个文件中包含其中的许多。如果您使用 opencv_createsamples 显示 *.vec 文件,您可以使用箭头键翻阅它们(我认为)。

    • 您需要 mergevec 程序,它将所有 *.vec 文件合并为一个,这是训练所需的。我使用的是 Windows,所以我不知道如何获取 mac 的东西。

    • opencv_traincascade 的输出似乎表明它在 samples.vec 中找到了一千张图像。如果您没有 mergevec,我假设您使用的是预构建 samples.vec 文件。

    • “陷入这种情况”是什么意思?没有更多的输出,但没有崩溃?有时,培训需要几个小时。

    【讨论】:

      猜你喜欢
      • 2013-10-23
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 2016-10-29
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多