Skip to content

Commit 52d4b15

Browse files
author
arch
committed
fix roll prediction with offset
1 parent 395405f commit 52d4b15

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

funscript_editor/algorithms/funscriptgenerator.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from os import error, read
44
import cv2
55
import copy
6+
import sys
67
import time
78
import math
89
import funscript_editor.utils.logging as logging
@@ -188,15 +189,17 @@ def get_dick_pos(self, max_distance_frame_num: int) -> dict:
188189
max_distance_frame = FFmpegStream.get_projection(max_distance_frame, self.projection_config)
189190
frame_h, frame_w = max_distance_frame.shape[:2]
190191
center_line = self.ui.line_selector(max_distance_frame, "draw line on center of dick")
192+
print('center_line', center_line)
191193

192194
# last idx: 0 = x, 1 = y
193195
dick_pos = { 'w': center_line[1], 'm': center_line[0] } \
194-
if center_line[0][0] > center_line[1][0] \
196+
if center_line[0][1] > center_line[1][1] \
195197
else { 'w': center_line[0], 'm': center_line[1] }
198+
print('dick_pos', dick_pos)
196199

197200
# TODO: dividor is an hyperparameter
198-
dx = (dick_pos['m'][0] - dick_pos['w'][0]) / 8
199-
dy = (dick_pos['m'][1] - dick_pos['w'][1]) / 8
201+
dx = (dick_pos['m'][0] - dick_pos['w'][0]) / 3
202+
dy = (dick_pos['m'][1] - dick_pos['w'][1]) / 3
200203
return {
201204
'w': (self.clamp(dick_pos['w'][0] - dx, 0, frame_w-1), self.clamp(dick_pos['w'][1] - dy, 0, frame_h-1)),
202205
'm': (self.clamp(dick_pos['m'][0] + dx, 0, frame_w-1), self.clamp(dick_pos['m'][1] + dy, 0, frame_h-1))
@@ -239,11 +242,30 @@ def calculate_score(self, bboxes) -> None:
239242
dick_pos = self.get_dick_pos(max_distance_frame_num)
240243
dick_pos['idx'] = max_distance_frame_num - self.params.start_frame
241244

245+
if False:
246+
# debugging
247+
frame = FFmpegStream.get_frame(self.params.video_path, max_distance_frame_num)
248+
frame = FFmpegStream.get_projection(frame, self.projection_config)
249+
cv2.circle( frame, (int(dick_pos['w'][0]), int(dick_pos['w'][1])), 4, (0,255,0), 2)
250+
cv2.circle( frame, (int(dick_pos['m'][0]), int(dick_pos['m'][1])), 4, (255,0,0), 2)
251+
cv2.imshow('debug', frame)
252+
cv2.waitKey(10000)
253+
242254
roll_woman_offset = (dick_pos['w'][0] - woman_center[dick_pos['idx']][0], dick_pos['w'][1] - woman_center[dick_pos['idx']][1])
243-
roll_men_offset = (dick_pos['m'][0] - woman_center[dick_pos['idx']][0], dick_pos['m'][1] - woman_center[dick_pos['idx']][1])
255+
roll_men_offset = (dick_pos['m'][0] - men_center[dick_pos['idx']][0], dick_pos['m'][1] - men_center[dick_pos['idx']][1])
244256
self.logger.info('use roll offset w = %s, m = %s', str(roll_woman_offset), str(roll_men_offset))
245257

246258
for i in range( min(( len(men_center), len(woman_center) )) ):
259+
260+
if False:
261+
#debugging
262+
frame = FFmpegStream.get_frame(self.params.video_path, i + self.params.start_frame)
263+
frame = FFmpegStream.get_projection(frame, self.projection_config)
264+
cv2.circle( frame, (int(woman_center[i][0] + roll_woman_offset[0]), int(woman_center[i][1] + roll_woman_offset[1])), 4, (255,0,255), 2)
265+
cv2.circle( frame, (int(men_center[i][0] + roll_men_offset[0]), int(men_center[i][1] + roll_men_offset[1])), 4, (255,0,255), 2)
266+
cv2.imshow('debug', frame)
267+
cv2.waitKey(1)
268+
247269
x = woman_center[i][0] + roll_woman_offset[0] - (men_center[i][0] + roll_men_offset[0])
248270
y = men_center[i][1] + roll_men_offset[1] - (woman_center[i][1] + roll_woman_offset[1])
249271
if x >= 0 and y >= 0:

0 commit comments

Comments
 (0)