gpt4 book ai didi

android - 使用 OpenCV 进行运动检测

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:48:02 25 4
gpt4 key购买 nike

我看到有关于opencv运动检测的问题,但是我的要求简单多了,所以我又来问了。我想分析视频帧并查看帧中是否发生了某些变化。帧中发生的任何类型的运动都已被识别。我只想在发生某些事情时得到通知。我不需要跟踪/绘制轮廓。

尝试:

1) 使用 OpenCV ( TM_CCORR_NORMED ) 进行模板匹配。

我使用 cvMinMaxLoc & 得到相似度指数

if( sim_index > threshold ) 
"Nothing chnged"
else
"Changed


面临的问题:

我找不到决定如何设置阈值的方法。错误匹配和完美匹配的值非常接近。

2)方法二
a) 制作运行平均值
b) 取当前帧和移动平均之间的绝对差异。
c) 对其进行阈值处理并使其成为二进制
d) 统计非零值的个数
再次被困在如何设置阈值上,因为即使对于非常相似的帧,我也会得到大量的非零值。

请告诉我应该采取什么方法。我使用上述两种方法的方向是否正确,或者是否有一种简单的方法可以适用于所有大多数通用场景。

最佳答案

方法 2 通常被认为是最简单的运动检测方法,如果视频中没有水、摇曳的树木或变化很大的光照条件,则方法 2 非常有效。通常你这样实现它:

motion_frame=abs(newframe-running_avg);
running_avg=(1-alpha)*running_avg+alpha*newframe;

如果需要,您可以对 motion_frame 设置阈值,然后计算非零值。但是您也可以只对 motion_frame 的元素和阈值求和(一定要使用 float )。为此优化参数非常简单,只需制作两个轨迹条并使用它即可。通常 alpha 约为 [0.1; 0.3].

最后,对整个帧执行此操作可能有点矫枉过正,您可以只使用子采样版本,结果会非常相似。

关于android - 使用 OpenCV 进行运动检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13978700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com