我看到与opencv运动检测有关的查询,但我的要求更简单,所以我再次问这个问题。 我想分析视频帧并查看帧中是否发生了变化。在框架中发生的任何类型的运动都被认可。如果发生什么事我只想得到通知。我不需要追踪/绘制轮廓。制成运动检测使用OpenCV
尝试:
1)使用的OpenCV(TM_CCORR_NORMED模板匹配)。
我得到使用cvMinMaxLoc &
if(sim_index > threshold)
"Nothing chnged"
else
"Changed
面临的问题相似度指数:
我无法找到一个方法来决定如何设定阈值。错配和完美的价值非常接近。
2)方法2
a)使运行平均值
b)采取当前帧与移动平均之间绝对差。
c)阈值并使其成为二进制
d)计算非零值的数量
我再次坚持如何对它进行阈值处理,因为即使对于非常相似的帧,我也获得了大量的非零值。
请问我应该采取什么方法。我是用上述两种方法走向正确的方向,还是有一种简单的方法可以在所有大多数通用情况下工作。
如果TM_CCORR_NORMED与Pearson Correlation Coefficient等价,那么取决于您的帧如何修改,您将很难确定此方法的良好阈值,因为没有好的阈值。但你没有清楚地说出你在第一种方法中做了什么。你是否将初始帧设置为基准帧,然后将每个新帧与它进行比较?然后,如果'sim_index'低于'threshold',则将此新框架标记为基础框架。重复。那是你的方法吗? – mmgp