我正在尝试在OpenCV C++中实现一个运动检测。我尝试了各种方法,例如,检测组,光流,这些方法工作得很好,但是有什么方法可以消除场景中的持续运动,比如一个恒定的风扇运动等等?我想到了opencv accumuateWeighted(),但不确定它是否有效。有什么更好的方法吗?
发布于 2017-11-08 12:07:14
我没有完全可靠的解决方案,也没有任何视频处理的经验,但我会把我的想法,无论到目前为止,我已经进入这个问题:
首先,考虑视频中的几对连续图像帧,并将它们转换为灰度,以便进行更健壮的比较。
光栅扫描图像对,通过比较相应的图像对,找出图像对的差异。得到的图像将给出图像在图像中发生变化时的像素位置,对这些像素位置进行聚类,并在其上形成一个边界框。这样,这个包围框区域将标记一个正在平移/旋转的对象。
现在,由于我们已经应用了上面的图像差运算,对几对。我们将在每个图像对差的旋转/转换边界框。现在,签入每个结果的图像差异与像素有边界框在他们上面。
比较不同图像中的边框中央位置与其他差异图像。如果在所有不同的图像中存在中心位置变化很小的包围框,则该边界框中包含的对象将具有像扇那样的旋转运动,剩余的包围框将代表视频中的实际转换对象。
https://stackoverflow.com/questions/47131478
复制相似问题