为什么使用OpenCV检测到对象跳转

时间:2015-02-01 12:24:38

标签: android opencv augmented-reality detect opencv4android

好的我有一个奇怪的问题。我会尽力把它描述得最好。

我从侧面看到了我的应用程序以检测汽车

    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);
    }

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

1 个答案:

答案 0 :(得分:0)

  1. 请参阅(1detectMultiScale的参数并期望 CV_8U类型的图片。您需要转换为灰度图像 使用COLOR_RGBA2GRAY代替COLOR_RGBA2RGB
  2. detectMultiScale中,增加邻居数量参数以避免误报。
  3. 建议:如果输入是视频流,请不要运行 每一帧detectMultiScale。即使您使用LBP,它也很慢 级联。尝试在一帧中进行检测,然后进行跟踪技术。