我试图找到一种方法来计算被跟踪物体的速度和加速度,让我们说一个球落下。我正在使用Processing 2制作这个程序,我知道从相机到物体的距离,它可以计算它在运动过程中每一帧的位置。
为了计算速度,我使用了这个公式(全部以像素计算):VelocityX =(PositionX - LastPositionX)/ delta time
与加速类似的东西:AccelerationX =(VelocityX - LastVelocityX)/ delta time
然后,我用帧改变了delta时间。所以现在我的每帧像素的速度和加速度都有,但我的问题是如何将每帧的像素转换为mm / s?更直观的单位。
我也以像素为单位计算位置,但之后我转换为mm,但我对速度和加速度如何做到这一点感到困惑。
// get the current time
currTime = frameCount;
deltaTime = (currTime - prevTime);
// remember current time for the next frame
prevTime = currTime;
// Calculate velocity in X and Y directions (pixels / frame)
if (lastMovingX != Float.MAX_VALUE) {
velX = (PX - lastMovingX) / deltaTime;
velY = (PY - lastMovingY) / deltaTime;
}
//Save the current frame position for the next calculation
lastMovingX = PX;
lastMovingY = PY;
if (lastVelX != Float.MAX_VALUE) {
accelX = (velX - lastVelX) / deltaTime;
accelY = (velY - lastVelY) / deltaTime;
}
lastVelX = velX;
lastVelY = velY;
答案 0 :(得分:1)
如果您知道对象的大小,则可以提取像素/ mm的比率。如果您知道帧速率,则可以将帧转换为秒。
查找像素/ mm =像素大小/对象大小(mm)
(像素/帧)/(像素/ mm)= mm /帧
毫米/帧*帧/秒=毫米/秒
这是你在找什么?