c++ - 我应该使用哪种对象识别算法?

标签 c++ algorithm object opencv object-recognition

我对 CV 很陌生,所以请原谅我愚蠢的问题...

我想做的事:
我想在实时视频中识别一架遥控飞机(目前它只是一个录制的视频)。

到目前为止我做了什么:

  • 框架之间的差异
  • 将其转换为灰度
  • 高斯模糊
  • 阈值
  • 找到轮廓

以下是一些示例框架:

但也有一些帧带有噪声,所以帧中的对象较多。

我以为我可以做这样的事情:

对已找到的每个轮廓使用某种对象识别算法。并且只计算每个边界矩形的特征向量。

是否可以仅针对图像的特定补丁(较小部分)计算 SURF/SIFT/...?

由于算法能够处理实时视频非常重要,我认为只有在我不一直查看整个图像的情况下才有可能?!或者,如果有超过 10 个边界矩形,我可能会决定检查整个图像而不是每个矩形。

然后我将查看下一帧并尝试将我的特征向量与前一帧匹配。这样我就可以追踪我的对象。一旦这些物体越过图片中间的红线,就会触发另一个事件。但这在这里并不重要。

我需要确保不是每一个穿过红线或在红线后面的物体都会触发该事件。因此,至少需要有 2 或 3 个连续的帧包含该对象,如果它穿过,那么事件应该被触发。

物体识别算法种类繁多,我有点不知所措。 筛选/冲浪/Orb/...你明白我在说什么。

任何人都可以提示我应该选择哪一个,或者我正在做的事情是否有意义?

最佳答案

假设平面位置从一帧到下一帧变化不大,我认为您应该查看对象跟踪,而不是尝试在每一帧中独立估计位置。 http://docs.opencv.org/modules/video/doc/motion_analysis_and_object_tracking.html

关于c++ - 我应该使用哪种对象识别算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20868941/

相关文章:

python - 如何删除(或取消网格)存储在列表中的 Tkinter GUI 对象 (Python)

c++ - 模板类中的嵌套类型

c++ - Boost Fusion 变换类型操作和 as_vector

C++ 异常和来自 std::exception 的继承

javascript - 如何获取 javascript 对象属性的子集

javascript - 当对象键存在于javascript中另一个对象的数组中时重构对象数据

c++ - 如何使用 DOM xerces c++.. 在 xml 文件中查找元素名称?

image - 如何判断图像是否为 90% 黑色?

algorithm - 如何用多米诺骨牌填满棋盘?

c - 一些Graph操作的最简单算法的建议