使用OpenCV检测帧

时间:2015-10-30 16:23:34

标签: opencv

我有一个预定义的参考视频帧,我想在大量视频文件中检测到。我针对参考帧测试每个视频帧,但我不确定它的最佳算法是什么。

目前我使用的是matchTemplate / TM_CCOEFF,它有点有效,但有点奇怪。这是一个1:1匹配,所以我得到一个非常大的数字(高于MAX整数)的1x1结果。设置任何阈值非常困难(我需要对质量较差的视频进行容忍),因为这个数字是任意的。

我想知道是否有更好的方法,或者我只是以错误的方式使用它?

//编辑确定,我认为阈值问题是我对double值的错误解释,TM_CCOEFF_NORMED返回0.0-1.0值。

1 个答案:

答案 0 :(得分:1)

那么,为了处理压缩工件和其他事情,我不得不说减法方法并不像许多人想象的那么好。当你有噪声和由于压缩造成的图像对比度的变化时,最好使用更强大的方法,例如相关方法,它可能会有点贵,但更精确。我使用了ZNCC(零点交叉关联)并且效果非常好,我在运动检测中使用它,假设相机已经修复,并且效果非常好。

为了使用积分图像降低计算成本,您可以做一些事情,这里是example。此外,我建议使用较低分辨率的图像来更快地完成它,并且不会有这么糟糕的原因,这种方法对某些变化和噪声非常稳健。最后,您可以通过查看视频帧中的最高相关因子来跟踪您希望的帧。