Opencv4android来做对象跟踪



我使用ffmpeg在Android项目的SurfaceView上播放视频流。现在我想实现以下功能。1)在SurfaceView上画一个红色矩形,选择一个对象。2)将选定对象的x, y,宽度,高度以及原始视频帧发送到opencv。3)然后,opencv通过处理新的视频帧返回对象的新的x和y。

以前有人做过吗?我会很高兴你给我一些建议,或者告诉我很我可以下载演示源代码。非常感谢。

对于第(1)部分,尝试更多地搜索Google。不难找到一个使用触摸输入的教程,一个绘制矩形的教程,以及一个在SurfaceView上绘制的教程。第(2)部分是通过如何设置和定义变量来完成的——没有特定的机制或函数来"发送"数据。

第(3)部分是不明显的部分,所以这是我将重点关注的部分。与计算机视觉中的大多数问题一样,您可以通过多种方式解决对象跟踪问题。在没有特定顺序的情况下,出现在脑海中的内容包括:

  • 光流 - Python openCV示例在这里
    • Lucas-Kanade -算法逐帧比较提取的特征。[功能默认为Shi-Tomasi,但也可以是BRIEF, ORB, SIFT/SURF或其他任何功能。]如果功能的数量是合理的[在100的数量级内],这运行得足够快。
    • Dense [Farneback] -该算法比较连续帧并产生运动方向和大小的密集矢量场。
  • 直接图像配准 -如果帧之间的运动很小[约为相机视场的5-15%],则有功能可以快速有效地将之前的图像映射到当前图像。然而,这个特性并不在普通的OpenCV包中——你需要下载并编译贡献模块,并使用Android NDK。如果你是Java和c++的初学者,我不建议你使用它。
  • 模板匹配[示例]-如果对象和相机方向变化不大,则有用且便宜。

相关内容

  • 没有找到相关文章

最新更新