【发布时间】:2012-06-06 14:35:46
【问题描述】:
G'早上好-
我正在尝试移动视频上的一些边界框。我正处于一个症结所在。如果我在数据文件上每 15 帧就有一个帧,那么我必须在每个真实帧之间创建 14 帧。由于它是一个工具(实际上是 ffmpeg 插件的一部分),它需要适用于任何间隙大小。
我编写了一个函数,它获取两点之间的距离,以及从起点平滑过渡到终点需要多少帧。理想情况下,此函数将返回一个数组,其中包含从前一帧移动多少像素
例如,如果第 1 帧的 x 为 50,而第 16 帧的 x 为 65,那么我将拥有一个全为 1 的数组,这样每一帧都会在之前的帧中添加一个。到目前为止,这是我所得到的:
int* generateSequence(int difference, int numStep){
int* sequence = (int*)malloc(sizeof(int*)*numStep);
int i;
for(i=0; i<numStep; i++){
sequence[i] = 0;
}
while(difference > numStep){
for(i=0; i<numStep; i++){
sequence[i]++;
}
difference -= numStep;
}
我对这部分很满意,(对于两者之间的距离超过中间帧数的每倍数,它会在每个帧之间添加一个)。
但现在我已经到了需要向某些帧添加一个但不是全部的地步。我所拥有的只是这些陪审团操纵的算法,它们对于产生不同帧距离的工具来说不是很便携......
double delta = difference/numStep;
if(delta >=.05 && delta< .20){
for(i=0; i<numStep; i+=6){
sequence[i]++;
}
}
我应该使用模数运算符还是以不同的方式接近它?用看似任意值的硬编码并不适合我。
【问题讨论】:
-
你这里的问题不是很清楚。当您说“边界框”时,您的意思是您尝试在视频的每一帧上绘制一个矩形,以便该矩形从其起始位置平滑地移动到您的结束位置?
-
是的。我有一个面部识别程序,每 15 帧输出一次此类框的坐标和框属性,并输出到日志文件。我正在尝试创建一个程序来对此进行插值,以便新的日志文件每帧都具有坐标和属性。我知道我可能没有很好地解释它,我很抱歉我是一个糟糕的沟通者。如果还有什么我可以澄清的,请告诉我。
标签: c algorithm math interpolation