0

好的,我有一个奇怪的问题。我会尽量描述它。

我已经学会了我的应用程序可以在从侧面看汽车时检测它

    Imgproc.cvtColor(aInputFrame, grayscaleImage, Imgproc.COLOR_RGBA2RGB);

    MatOfRect objects = new MatOfRect();

    // Use the classifier to detect cars
    if (cascadeClassifier != null) {
        cascadeClassifier.detectMultiScale(grayscaleImage, objects, 1.1, 1,
        2, new Size(absoluteObjectSize, absoluteObjectSize),
        new Size());
    }
    for (int i = 0; i < dataArray.length; i++) {
                Core.rectangle(aInputFrame, dataArray[i].tl(), dataArray[i].br(),
                        new Scalar(0, 255, 0, 255), 3);


                mRenderer.setCameraPosition(-5, 5, 60f);
    }

现在,这段代码运行良好。我的意思是我检测到汽车并用绿色矩形标记它们。问题是标记的矩形跳得像地狱一样。我的意思是即使手机保持不动,矩形也会从左到右跳到中间。从来没有一个静止的矩形。我希望我已经正确地描述了这个问题。我想稳定标记,因为我想根据它绘制一个叠加层,我不能让它像这样跳跃

4

1 回答 1

0
  1. 请参阅 ( 1 ) 的参数detectMultiScale,它需要类型为 的图像CV_8UCOLOR_RGBA2GRAY您将需要使用而不是转换为灰度图像COLOR_RGBA2RGB
  2. detectMultiScale中,增加邻居参数的数量以避免误报。
  3. 建议:如果输入是视频流,不要 detectMultiScale在每一帧都运行。即使您使用LBP 级联,它也很慢。尝试在一帧中进行检测,然后使用跟踪技术。
于 2015-02-01T16:35:55.320 回答