Skip to content

Commit d765095

Browse files
author
arch
committed
improve border interpolation
1 parent daaa992 commit d765095

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

funscript_editor/algorithms/funscriptgenerator.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,16 @@ def interpolate_bboxes(self, bboxes :dict) -> None:
225225
for key in bboxes:
226226
x = [k for k in bboxes[key].keys()]
227227
boxes = [v for v in bboxes[key].values()]
228-
if len(boxes) == 0: continue
228+
if len(boxes) < 2: continue
229229

230-
fx0 = interp1d(x, [item[0] for item in boxes], kind = 'quadratic')
231-
fy0 = interp1d(x, [item[1] for item in boxes], kind = 'quadratic')
232-
fw = interp1d(x, [item[2] for item in boxes], kind = 'quadratic')
233-
fh = interp1d(x, [item[3] for item in boxes], kind = 'quadratic')
230+
# improve border interpolation
231+
x_head = [x[0]-1]+x+[x[-1]+1]
232+
boxes = [boxes[0]]+boxes+[boxes[-1]]
233+
234+
fx0 = interp1d(x_head, [item[0] for item in boxes], kind = 'quadratic')
235+
fy0 = interp1d(x_head, [item[1] for item in boxes], kind = 'quadratic')
236+
fw = interp1d(x_head, [item[2] for item in boxes], kind = 'quadratic')
237+
fh = interp1d(x_head, [item[3] for item in boxes], kind = 'quadratic')
234238

235239
for i in range(min(x), max(x)+1):
236240
self.bboxes[key].append((float(fx0(i)), float(fy0(i)), float(fw(i)), float(fh(i))))

0 commit comments

Comments
 (0)