c++ - 改进open cv中的camshift算法

标签 c++ opencv computer-vision

我正在使用 opencv 的 camshift 算法进行对象跟踪。输入是从网络摄像头获取的,并且在连续帧之间跟踪对象。我怎样才能使跟踪更强?如果我快速移动物体,跟踪就会失败。此外,当对象不在框架中时,也会出现错误检测。我该如何改进?

最佳答案

对象跟踪是计算机视觉中的一个活跃研究领域。有很多算法可以做到这一点,但没有一种算法 100% 有效。

如果您需要实时跟踪,那么您需要简单快速的东西。我假设你有办法从背景中分割出一个移动的物体。然后您可以计算对象的表示,例如颜色直方图,并将其与您在下一帧中找到的对象进行比较。您还应该检查对象在帧之间没有移动太远。如果您想尝试更高级的运动跟踪,那么您应该查看卡尔曼滤波器。

判断一个物体不在框内也是一个大问题。首先,您要跟踪什么类型的对象?人们?汽车?小狗?您可以构建一个对象分类器,它会告诉您画面中的移动对象是否是您感兴趣的对象,而不是噪声或其他类型的对象。分类器可以是非常简单的东西,例如大小约束,也可以是非常复杂的东西。在后一种情况下,您需要了解可以计算的特征、分类算法(例如支持 vector 机),并且您需要收集训练图像来对其进行训练。

简而言之,构建可靠的跟踪器并非易事。

关于c++ - 改进open cv中的camshift算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4947236/

相关文章:

c++ - 将列 vector 从矩阵复制到opencv中另一个矩阵的每个列

python - 将 RGB 视频转换为灰度视频以减小文件大小

PHP - 使图像背景透明并具有容差

c++ - Visual Studio C++ : Debug Assertion Failed

c++ - 多态类成员变量

c++ - 如何将坐标分布对齐到完美对齐?

android - 如何在没有 API 的情况下在 Android 中执行图像处理?

c++ - 编译C++代码报错 "undefined reference to",原来的makefile代码编译通过

c++ - '...' token 的正确术语是什么?

python - OpenCV Python 不能使用 SIFT