2

您好,我正在尝试使用级联分类器、android 和 opencv 库来识别汽车。我的问题是我的手机几乎将所有东西都标记为汽车。

我根据以下内容创建了我的代码: https ://www.youtube.com/watch?v=WEzm7L5zoZE 和人脸检测示例。我的应用程序表现得很奇怪,因为标记看起来很随机。我什至不知道标记汽车是否正确,或者这只是一些随机行为。目前它甚至将我的键盘标记为汽车。我不确定我可以改进什么。我看不到将它训练到 5 或 14 个阶段之间的任何进展

我已经训练了我的文件多达 14 个阶段

我的代码如下所示:

@Override
public Mat onCameraFrame(Mat aInputFrame) {
    // return FrameAnalyzer.analyzeFrame(aInputFrame);
    // Create a grayscale image
    Imgproc.cvtColor(aInputFrame, grayscaleImage, Imgproc.COLOR_RGBA2RGB);

    MatOfRect objects = new MatOfRect();

    // Use the classifier to detect faces
    if (cascadeClassifier != null) {
        cascadeClassifier.detectMultiScale(grayscaleImage, objects, 1.1, 1,
                2, new Size(absoluteObjectSize, absoluteObjectSize),
                new Size());
    }

    Rect[] dataArray = objects.toArray();
    for (int i = 0; i < dataArray.length; i++) {
        Core.rectangle(aInputFrame, dataArray[i].tl(), dataArray[i].br(),
                new Scalar(0, 255, 0, 255), 3);
    }

    return aInputFrame;
}
4

1 回答 1

2

尝试更改以下内容。

  1. 在示例代码中使用COLOR_RGBA2RGBwith cvtColoras 不会给出灰度图像。尝试RGBA2GRAY
  2. 增加 中的邻居detectMultiScale数。现在是 2。更多的邻居意味着对结果更有信心。
  3. 希望有足够的样本来训练。快速搜索和阅读书籍,给人的印象是训练需要数千张图像。例如,大约 10000 张图像用于 OCR haar 训练。对于人脸训练,使用了 3000 到 5000 个样本。
  4. 更重要的是,决定你是否真的想通过训练来识别汽车。可能有更好的车辆识别方法。例如,对于移动的车辆,我们可以使用基于光流的技术。
于 2014-12-07T18:19:45.507 回答