android– 使用OpenCV进行运动检测

android– 使用OpenCV进行运动检测,第1张

概述我看到与opencv运动检测相关的查询,但我的要求更简单,所以我再次提出问题.我想分析视频帧,看看帧中是否有变化.已经识别出在帧中发生的任何类型的运动.如果发生某些事情,我只是想收到通知.我不需要跟踪/绘制轮廓.尝试:1)使用OpenCV(TM_CCORR_NORMED)进行模板匹配.我使用cvMinMaxLoc&获得了相似性指数.if( sim_i

我看到与opencv运动检测相关的查询,但我的要求更简单,所以我再次提出问题.
我想分析视频帧,看看帧中是否有变化.已经识别出在帧中发生的任何类型的运动.如果发生某些事情,我只是想收到通知.我不需要跟踪/绘制轮廓.

尝试:

1)使用OpenCV(TM_CCORR_norMED)进行模板匹配.

我使用cvMinMaxLoc&获得了相似性指数.

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

    面临的问题:

我找不到决定如何设置阈值的方法.虚假匹配和完美的价值非常接近.

2)方法2
    a)使平均运行
    b)取当前帧和移动平均线之间的abs差异.
    c)将其阈值并使其成为二进制
    d)计算非零值的数量
    再次坚持如何对其进行阈值处理,因为即使对于非常相似的帧,我也会获得大量的非零值.

请告诉我应该采取什么方法.我是否采用上述两种方法朝着正确的方向前进,或者是否有一种简单的方法可以在所有最通用的场景中使用.

最佳答案方法2通常被认为是最简单的运动检测方法,如果您的视频中没有水,摇晃的树木或高度可变的光照条件,则非常有效.
通常你这样实现它:

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

如果需要,可以对motion_frame进行阈值处理,然后计算非零值.但是你也可以只计算motion_frame和阈值的元素(确保使用浮点数).为此优化参数非常简单,只需制作两个轨道栏并使用它即可.通常α约为[0.1; 0.3].

最后,在整个帧上执行此 *** 作可能有点过分,您可以使用二次采样版本,结果将非常相似.

总结

以上是内存溢出为你收集整理的android – 使用OpenCV进行运动检测全部内容,希望文章能够帮你解决android – 使用OpenCV进行运动检测所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1140152.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存