gpt4 book ai didi

c++ - 基于图像的计数算法对移动传送带上的物体进行计数

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:22:13 25 4
gpt4 key购买 nike

我正在构建一个视觉系统,它可以对在变速传送带上移动的箱子进行计数。

使用 open_cv 和 c++,我可以分离 blob 并提取各自的质心。

现在,如果质心穿过截止边界线,我必须增加计数变量。

这就是我卡住的地方。我尝试了 2 种选择。

  1. 修复一个矩形 strip ,其中质心只会停留在一个帧中
  • 但由于传送带是多速的,我无法确定一个恒定的边界值。
  1. 我试过类似的方法

    centroid_prev = centroid_now;
    centroid_now = posX;
    if (centroid_now >= xLimit && centroid_prev < xLimit)
    {
    count++;
    }
  • 如果传送带上只有一个盒子,这种方法就可以正常工作。

  • 但是对于同一帧中的 2 个或更多 blob,我不知道如何使用数组来处理轮廓。

能否请你推荐一个简单的计数算法,它可以比较前一帧和当前帧之间的 blob 属性,即使每帧存在多个 Blob ?

附言。传送带速度约为 50 盒/秒,因此我们将非常感谢轻量级算法,否则我们可能会以较低的帧速率结束。

最佳答案

假设您粘贴的图像具有代表性,您可以通过某种跟踪轻松解决此问题。我想到的最简单的方法是使用 goodFeaturesToTrackcalcOpticalFlowPyrLK 来跟踪传送带的运动。
您可能需要对结果进行一些过滤,但我认为这并不困难,因为运动和图像的噪音非常低。一旦有了该运动,您就可以计算每个质心何时超过某个 X 阈值并对其进行计数。

像图中这样的角点数量较少 (<100),它应该很快。

关于c++ - 基于图像的计数算法对移动传送带上的物体进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34489516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com