【问题标题】:why detected object jumps using OpenCV为什么使用 OpenCV 检测到的物体会跳跃
【发布时间】:2015-02-01 12:24:37
【问题描述】:

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

我的应用已经学会了从侧面看汽车时检测汽车

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

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

【问题讨论】:

    标签: android opencv augmented-reality detect opencv4android


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

    【讨论】:

      猜你喜欢
      • 2020-10-30
      • 2015-09-09
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      • 2013-12-23
      相关资源
      最近更新 更多