如何在OpenCV中获得“动作得分”?

时间:2013-08-08 17:44:14

标签: opencv

我需要一个数字来表示场景在前景或后台移动了多少。

谢谢!

1 个答案:

答案 0 :(得分:1)

最简单的方法是:

   Mat currentFrame, lastFrame, diff;
   absdiff( currentFrame, lastFrame, diff );
   float n = norm(diff, CV_NORM_L2);
   lastFrame = currentFrame.clone();

这里,n是衡量这个和最后一个帧之间差异的度量

也许你甚至想要光流,它为你提供每个像素的运动矢量:

  // convert to grayscale before ..
  //
  Mat flow;      
  calcOpticalFlowFarneback(prevgray, gray, flow, 0.5, 3, 15, 3, 5, 1.2, 0);
  // 
  // flow is a CV_32FC2 matrix, each "pixel" is a Point2f with x,y being the motion gradient for that 

位置

(也有一个demo