我看到与 opencv 运动检测相关的查询,但我的要求要简单得多,所以我再次问这个问题。我想分析视频帧,看看帧中是否发生了变化。帧中发生的任何类型的运动都已被识别。我只想在有事情发生时得到通知。我不需要跟踪/绘制轮廓。
尝试:
1) 使用 OpenCV (TM_CCORR_NORMED) 进行模板匹配。
我使用 cvMinMaxLoc & 得到相似度指数
if( sim_index > threshold )
"Nothing chnged"
else
"Changed
面临的问题:
我找不到决定如何设置阈值的方法。错误匹配和完美的值非常接近。
2) 方法2
a) 做移动平均
b) 取当前帧和移动平均之间的绝对差。
c)对其进行阈值化并使其成为二进制
d)计算非零值的数量
再次陷入如何设置阈值的问题,因为即使对于非常相似的帧,我也会得到大量的非零值。
请告诉我我应该采取什么方法。我是否使用上述两种方法朝着正确的方向前进,或者是否有一种简单的方法可以在所有最通用的情况下工作。