G' Morning SO-
我正在尝试移动视频上的一些边界框。我正处于一个症结所在。如果我在数据文件中每 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]++;
}
}
我应该使用模数运算符还是以不同的方式接近它?硬编码看起来像任意值并不适合我。