Spaces:
Runtime error
Runtime error
update global variance traj_list and camera_dict
Browse files- app.py +8 -108
- gradio_utils/page_control.py +111 -12
app.py
CHANGED
|
@@ -13,9 +13,8 @@ from omegaconf import OmegaConf
|
|
| 13 |
from PIL import Image
|
| 14 |
from pytorch_lightning import seed_everything
|
| 15 |
|
| 16 |
-
from gradio_utils.camera_utils import CAMERA_MOTION_MODE, process_camera
|
| 17 |
-
from gradio_utils.traj_utils import (OBJECT_MOTION_MODE,
|
| 18 |
-
process_points, process_traj)
|
| 19 |
from gradio_utils.utils import vis_camera
|
| 20 |
from lvdm.models.samplers.ddim import DDIMSampler
|
| 21 |
from main.evaluation.motionctrl_inference import (DEFAULT_NEGATIVE_PROMPT,
|
|
@@ -23,7 +22,8 @@ from main.evaluation.motionctrl_inference import (DEFAULT_NEGATIVE_PROMPT,
|
|
| 23 |
post_prompt)
|
| 24 |
from utils.utils import instantiate_from_config
|
| 25 |
|
| 26 |
-
from gradio_utils.page_control import (MODE, BASE_MODEL,
|
|
|
|
| 27 |
reset_camera,
|
| 28 |
visualized_step1, visualized_step2,
|
| 29 |
visualized_camera_poses, visualized_traj_poses,
|
|
@@ -31,7 +31,8 @@ from gradio_utils.page_control import (MODE, BASE_MODEL, traj_list, camera_dict,
|
|
| 31 |
input_raw_camera_pose,
|
| 32 |
change_camera_mode, change_camera_speed,
|
| 33 |
add_traj_point, add_provided_traj,
|
| 34 |
-
fn_traj_droplast, fn_traj_reset
|
|
|
|
| 35 |
|
| 36 |
os.environ['KMP_DUPLICATE_LIB_OK']='True'
|
| 37 |
SPACE_ID = os.environ.get('SPACE_ID', '')
|
|
@@ -140,107 +141,6 @@ for i in range(0, 16):
|
|
| 140 |
res.append(RT)
|
| 141 |
|
| 142 |
fig = vis_camera(res)
|
| 143 |
-
|
| 144 |
-
def fn_vis_camera(info_mode, camera_args=None):
|
| 145 |
-
global camera_dict
|
| 146 |
-
RT = process_camera(camera_dict, camera_args) # [t, 3, 4]
|
| 147 |
-
|
| 148 |
-
rescale_T = 1.0
|
| 149 |
-
rescale_T = max(rescale_T, np.max(np.abs(RT[:,:,-1])) / 1.9)
|
| 150 |
-
|
| 151 |
-
fig = vis_camera(create_relative(RT), rescale_T=rescale_T)
|
| 152 |
-
|
| 153 |
-
if info_mode == MODE[0]:
|
| 154 |
-
vis_step3_prompt_generate = True
|
| 155 |
-
vis_prompt = True
|
| 156 |
-
vis_num_samples = True
|
| 157 |
-
vis_seed = True
|
| 158 |
-
vis_start = True
|
| 159 |
-
vis_gen_video = True
|
| 160 |
-
|
| 161 |
-
vis_object_mode = False
|
| 162 |
-
vis_object_info = False
|
| 163 |
-
|
| 164 |
-
else:
|
| 165 |
-
vis_step3_prompt_generate = False
|
| 166 |
-
vis_prompt = False
|
| 167 |
-
vis_num_samples = False
|
| 168 |
-
vis_seed = False
|
| 169 |
-
vis_start = False
|
| 170 |
-
vis_gen_video = False
|
| 171 |
-
|
| 172 |
-
vis_object_mode = True
|
| 173 |
-
vis_object_info = True
|
| 174 |
-
|
| 175 |
-
return fig, \
|
| 176 |
-
gr.update(visible=vis_object_mode), \
|
| 177 |
-
gr.update(visible=vis_object_info), \
|
| 178 |
-
gr.update(visible=vis_step3_prompt_generate), \
|
| 179 |
-
gr.update(visible=vis_prompt), \
|
| 180 |
-
gr.update(visible=vis_num_samples), \
|
| 181 |
-
gr.update(visible=vis_seed), \
|
| 182 |
-
gr.update(visible=vis_start), \
|
| 183 |
-
gr.update(visible=vis_gen_video, value=None)
|
| 184 |
-
|
| 185 |
-
def fn_vis_traj():
|
| 186 |
-
global traj_list
|
| 187 |
-
global exp_no
|
| 188 |
-
xy_range = 1024
|
| 189 |
-
points = process_points(traj_list)
|
| 190 |
-
imgs = []
|
| 191 |
-
for idx in range(16):
|
| 192 |
-
bg_img = np.ones((1024, 1024, 3), dtype=np.uint8) * 255
|
| 193 |
-
for i in range(15):
|
| 194 |
-
p = points[i]
|
| 195 |
-
p1 = points[i+1]
|
| 196 |
-
cv2.line(bg_img, p, p1, (255, 0, 0), 2)
|
| 197 |
-
|
| 198 |
-
if i == idx:
|
| 199 |
-
cv2.circle(bg_img, p, 2, (0, 255, 0), 20)
|
| 200 |
-
|
| 201 |
-
if idx==(15):
|
| 202 |
-
cv2.circle(bg_img, points[-1], 2, (0, 255, 0), 20)
|
| 203 |
-
|
| 204 |
-
imgs.append(bg_img.astype(np.uint8))
|
| 205 |
-
|
| 206 |
-
# size = (512, 512)
|
| 207 |
-
fps = 10
|
| 208 |
-
|
| 209 |
-
out_dir = f'./results_trajs/{exp_no}'
|
| 210 |
-
os.makedirs(out_dir, exist_ok=True)
|
| 211 |
-
exp_no += 1
|
| 212 |
-
|
| 213 |
-
traj_flow = process_traj(traj_list).transpose(3,0,1,2)
|
| 214 |
-
|
| 215 |
-
np.save(f'{out_dir}/traj_flow.npy', traj_flow)
|
| 216 |
-
with open(f'{out_dir}/traj_list.txt', 'w') as f:
|
| 217 |
-
for item in traj_list:
|
| 218 |
-
f.write(f"{item[0]}, {item[1]}\n")
|
| 219 |
-
|
| 220 |
-
if out_dir is None:
|
| 221 |
-
path = tempfile.NamedTemporaryFile(suffix='.mp4', delete=False).name
|
| 222 |
-
else:
|
| 223 |
-
path = os.path.join(out_dir, 'traj.mp4')
|
| 224 |
-
writer = imageio.get_writer(path, format='mp4', mode='I', fps=fps)
|
| 225 |
-
for img in imgs:
|
| 226 |
-
writer.append_data(img)
|
| 227 |
-
|
| 228 |
-
writer.close()
|
| 229 |
-
|
| 230 |
-
vis_step3_prompt_generate = True
|
| 231 |
-
vis_prompt = True
|
| 232 |
-
vis_num_samples = True
|
| 233 |
-
vis_seed = True
|
| 234 |
-
vis_start = True
|
| 235 |
-
vis_gen_video = True
|
| 236 |
-
return path, gr.update(visible=vis_step3_prompt_generate), \
|
| 237 |
-
gr.update(visible=vis_prompt), \
|
| 238 |
-
gr.update(visible=vis_num_samples), \
|
| 239 |
-
gr.update(visible=vis_seed), \
|
| 240 |
-
gr.update(visible=vis_start), \
|
| 241 |
-
gr.update(visible=vis_gen_video, value=None)
|
| 242 |
-
|
| 243 |
-
|
| 244 |
|
| 245 |
|
| 246 |
###########################################
|
|
@@ -274,8 +174,8 @@ if torch.cuda.is_available():
|
|
| 274 |
model_v2.eval()
|
| 275 |
|
| 276 |
def model_run(prompts, choose_model, infer_mode, seed, n_samples, camera_args=None):
|
| 277 |
-
|
| 278 |
-
|
| 279 |
|
| 280 |
RT = process_camera(camera_dict, camera_args).reshape(-1,12)
|
| 281 |
traj_flow = process_traj(traj_list).transpose(3,0,1,2)
|
|
|
|
| 13 |
from PIL import Image
|
| 14 |
from pytorch_lightning import seed_everything
|
| 15 |
|
| 16 |
+
from gradio_utils.camera_utils import CAMERA_MOTION_MODE, process_camera
|
| 17 |
+
from gradio_utils.traj_utils import (OBJECT_MOTION_MODE, process_traj)
|
|
|
|
| 18 |
from gradio_utils.utils import vis_camera
|
| 19 |
from lvdm.models.samplers.ddim import DDIMSampler
|
| 20 |
from main.evaluation.motionctrl_inference import (DEFAULT_NEGATIVE_PROMPT,
|
|
|
|
| 22 |
post_prompt)
|
| 23 |
from utils.utils import instantiate_from_config
|
| 24 |
|
| 25 |
+
from gradio_utils.page_control import (MODE, BASE_MODEL,
|
| 26 |
+
get_camera_dict, get_traj_list,
|
| 27 |
reset_camera,
|
| 28 |
visualized_step1, visualized_step2,
|
| 29 |
visualized_camera_poses, visualized_traj_poses,
|
|
|
|
| 31 |
input_raw_camera_pose,
|
| 32 |
change_camera_mode, change_camera_speed,
|
| 33 |
add_traj_point, add_provided_traj,
|
| 34 |
+
fn_traj_droplast, fn_traj_reset,
|
| 35 |
+
fn_vis_camera, fn_vis_traj,)
|
| 36 |
|
| 37 |
os.environ['KMP_DUPLICATE_LIB_OK']='True'
|
| 38 |
SPACE_ID = os.environ.get('SPACE_ID', '')
|
|
|
|
| 141 |
res.append(RT)
|
| 142 |
|
| 143 |
fig = vis_camera(res)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 144 |
|
| 145 |
|
| 146 |
###########################################
|
|
|
|
| 174 |
model_v2.eval()
|
| 175 |
|
| 176 |
def model_run(prompts, choose_model, infer_mode, seed, n_samples, camera_args=None):
|
| 177 |
+
traj_list = get_traj_list()
|
| 178 |
+
camera_dict = get_camera_dict()
|
| 179 |
|
| 180 |
RT = process_camera(camera_dict, camera_args).reshape(-1,12)
|
| 181 |
traj_flow = process_traj(traj_list).transpose(3,0,1,2)
|
gradio_utils/page_control.py
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
-
from gradio_utils.camera_utils import CAMERA_MOTION_MODE
|
| 3 |
-
from gradio_utils.traj_utils import get_provided_traj
|
|
|
|
| 4 |
|
| 5 |
MODE = ["control camera poses", "control object trajectory", "control both camera and object motion"]
|
| 6 |
|
|
@@ -17,6 +22,8 @@ def display_camera_info(camera_dict, camera_mode=None):
|
|
| 17 |
res += f"mode : {camera_dict['mode']}. "
|
| 18 |
return res
|
| 19 |
|
|
|
|
|
|
|
| 20 |
traj_list = []
|
| 21 |
camera_dict = {
|
| 22 |
"motion":[],
|
|
@@ -25,8 +32,16 @@ camera_dict = {
|
|
| 25 |
"complex": None
|
| 26 |
}
|
| 27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
def reset_camera():
|
| 29 |
-
|
| 30 |
camera_dict = {
|
| 31 |
"motion":[],
|
| 32 |
"mode": "Customized Mode 1: First A then B",
|
|
@@ -36,7 +51,7 @@ def reset_camera():
|
|
| 36 |
return display_camera_info(camera_dict)
|
| 37 |
|
| 38 |
def fn_traj_reset():
|
| 39 |
-
|
| 40 |
traj_list = []
|
| 41 |
return "Click to specify trajectory"
|
| 42 |
|
|
@@ -478,7 +493,7 @@ def visualized_traj_poses(step2_object_motion):
|
|
| 478 |
gr.update(visible=vis_gen_video)
|
| 479 |
|
| 480 |
def add_camera_motion(camera_motion, camera_mode):
|
| 481 |
-
|
| 482 |
if camera_dict['complex'] is not None:
|
| 483 |
camera_dict['complex'] = None
|
| 484 |
if camera_mode == CAMERA_MOTION_MODE[2] and len(camera_dict['motion']) <2:
|
|
@@ -489,7 +504,7 @@ def add_camera_motion(camera_motion, camera_mode):
|
|
| 489 |
return display_camera_info(camera_dict, camera_mode)
|
| 490 |
|
| 491 |
def add_complex_camera_motion(camera_motion):
|
| 492 |
-
|
| 493 |
camera_dict['complex']=camera_motion
|
| 494 |
return display_camera_info(camera_dict)
|
| 495 |
|
|
@@ -522,7 +537,7 @@ def change_camera_mode(combine_type, camera_mode):
|
|
| 522 |
gr.update(visible=vis_combine3_des)
|
| 523 |
|
| 524 |
def input_raw_camera_pose(combine_type, camera_mode):
|
| 525 |
-
|
| 526 |
camera_dict['mode'] = combine_type
|
| 527 |
|
| 528 |
vis_U = False
|
|
@@ -549,26 +564,26 @@ def input_raw_camera_pose(combine_type, camera_mode):
|
|
| 549 |
gr.update(visible=vis_combine3_des)
|
| 550 |
|
| 551 |
def change_camera_speed(camera_speed):
|
| 552 |
-
|
| 553 |
camera_dict['speed'] = camera_speed
|
| 554 |
return display_camera_info(camera_dict)
|
| 555 |
|
| 556 |
def add_traj_point(evt: gr.SelectData, ):
|
| 557 |
-
|
| 558 |
traj_list.append(evt.index)
|
| 559 |
traj_str = [f"{traj}" for traj in traj_list]
|
| 560 |
return ", ".join(traj_str)
|
| 561 |
|
| 562 |
def add_provided_traj(traj_name):
|
| 563 |
-
|
|
|
|
| 564 |
traj_list = get_provided_traj(traj_name)
|
| 565 |
traj_str = [f"{traj}" for traj in traj_list]
|
| 566 |
return ", ".join(traj_str)
|
| 567 |
|
| 568 |
|
| 569 |
def fn_traj_droplast():
|
| 570 |
-
|
| 571 |
-
|
| 572 |
if traj_list:
|
| 573 |
traj_list.pop()
|
| 574 |
|
|
@@ -578,3 +593,87 @@ def fn_traj_droplast():
|
|
| 578 |
else:
|
| 579 |
return "Click to specify trajectory"
|
| 580 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import cv2
|
| 2 |
+
import numpy as np
|
| 3 |
+
import tempfile
|
| 4 |
+
import imageio
|
| 5 |
import gradio as gr
|
| 6 |
+
from gradio_utils.camera_utils import CAMERA_MOTION_MODE, process_camera, create_relative
|
| 7 |
+
from gradio_utils.traj_utils import get_provided_traj, process_points
|
| 8 |
+
from gradio_utils.utils import vis_camera
|
| 9 |
|
| 10 |
MODE = ["control camera poses", "control object trajectory", "control both camera and object motion"]
|
| 11 |
|
|
|
|
| 22 |
res += f"mode : {camera_dict['mode']}. "
|
| 23 |
return res
|
| 24 |
|
| 25 |
+
global traj_list, camera_dict
|
| 26 |
+
|
| 27 |
traj_list = []
|
| 28 |
camera_dict = {
|
| 29 |
"motion":[],
|
|
|
|
| 32 |
"complex": None
|
| 33 |
}
|
| 34 |
|
| 35 |
+
def get_traj_list():
|
| 36 |
+
global traj_list
|
| 37 |
+
return traj_list
|
| 38 |
+
|
| 39 |
+
def get_camera_dict():
|
| 40 |
+
global camera_dict
|
| 41 |
+
return camera_dict
|
| 42 |
+
|
| 43 |
def reset_camera():
|
| 44 |
+
global camera_dict
|
| 45 |
camera_dict = {
|
| 46 |
"motion":[],
|
| 47 |
"mode": "Customized Mode 1: First A then B",
|
|
|
|
| 51 |
return display_camera_info(camera_dict)
|
| 52 |
|
| 53 |
def fn_traj_reset():
|
| 54 |
+
global traj_list
|
| 55 |
traj_list = []
|
| 56 |
return "Click to specify trajectory"
|
| 57 |
|
|
|
|
| 493 |
gr.update(visible=vis_gen_video)
|
| 494 |
|
| 495 |
def add_camera_motion(camera_motion, camera_mode):
|
| 496 |
+
global camera_dict
|
| 497 |
if camera_dict['complex'] is not None:
|
| 498 |
camera_dict['complex'] = None
|
| 499 |
if camera_mode == CAMERA_MOTION_MODE[2] and len(camera_dict['motion']) <2:
|
|
|
|
| 504 |
return display_camera_info(camera_dict, camera_mode)
|
| 505 |
|
| 506 |
def add_complex_camera_motion(camera_motion):
|
| 507 |
+
global camera_dict
|
| 508 |
camera_dict['complex']=camera_motion
|
| 509 |
return display_camera_info(camera_dict)
|
| 510 |
|
|
|
|
| 537 |
gr.update(visible=vis_combine3_des)
|
| 538 |
|
| 539 |
def input_raw_camera_pose(combine_type, camera_mode):
|
| 540 |
+
global camera_dict
|
| 541 |
camera_dict['mode'] = combine_type
|
| 542 |
|
| 543 |
vis_U = False
|
|
|
|
| 564 |
gr.update(visible=vis_combine3_des)
|
| 565 |
|
| 566 |
def change_camera_speed(camera_speed):
|
| 567 |
+
global camera_dict
|
| 568 |
camera_dict['speed'] = camera_speed
|
| 569 |
return display_camera_info(camera_dict)
|
| 570 |
|
| 571 |
def add_traj_point(evt: gr.SelectData, ):
|
| 572 |
+
global traj_list
|
| 573 |
traj_list.append(evt.index)
|
| 574 |
traj_str = [f"{traj}" for traj in traj_list]
|
| 575 |
return ", ".join(traj_str)
|
| 576 |
|
| 577 |
def add_provided_traj(traj_name):
|
| 578 |
+
global traj_list
|
| 579 |
+
# import pdb; pdb.set_trace()
|
| 580 |
traj_list = get_provided_traj(traj_name)
|
| 581 |
traj_str = [f"{traj}" for traj in traj_list]
|
| 582 |
return ", ".join(traj_str)
|
| 583 |
|
| 584 |
|
| 585 |
def fn_traj_droplast():
|
| 586 |
+
global traj_list
|
|
|
|
| 587 |
if traj_list:
|
| 588 |
traj_list.pop()
|
| 589 |
|
|
|
|
| 593 |
else:
|
| 594 |
return "Click to specify trajectory"
|
| 595 |
|
| 596 |
+
def fn_vis_camera(info_mode, camera_args=None):
|
| 597 |
+
global camera_dict
|
| 598 |
+
RT = process_camera(camera_dict, camera_args) # [t, 3, 4]
|
| 599 |
+
|
| 600 |
+
rescale_T = 1.0
|
| 601 |
+
rescale_T = max(rescale_T, np.max(np.abs(RT[:,:,-1])) / 1.9)
|
| 602 |
+
|
| 603 |
+
fig = vis_camera(create_relative(RT), rescale_T=rescale_T)
|
| 604 |
+
|
| 605 |
+
if info_mode == MODE[0]:
|
| 606 |
+
vis_step3_prompt_generate = True
|
| 607 |
+
vis_prompt = True
|
| 608 |
+
vis_num_samples = True
|
| 609 |
+
vis_seed = True
|
| 610 |
+
vis_start = True
|
| 611 |
+
vis_gen_video = True
|
| 612 |
+
|
| 613 |
+
vis_object_mode = False
|
| 614 |
+
vis_object_info = False
|
| 615 |
+
|
| 616 |
+
else:
|
| 617 |
+
vis_step3_prompt_generate = False
|
| 618 |
+
vis_prompt = False
|
| 619 |
+
vis_num_samples = False
|
| 620 |
+
vis_seed = False
|
| 621 |
+
vis_start = False
|
| 622 |
+
vis_gen_video = False
|
| 623 |
+
|
| 624 |
+
vis_object_mode = True
|
| 625 |
+
vis_object_info = True
|
| 626 |
+
|
| 627 |
+
return fig, \
|
| 628 |
+
gr.update(visible=vis_object_mode), \
|
| 629 |
+
gr.update(visible=vis_object_info), \
|
| 630 |
+
gr.update(visible=vis_step3_prompt_generate), \
|
| 631 |
+
gr.update(visible=vis_prompt), \
|
| 632 |
+
gr.update(visible=vis_num_samples), \
|
| 633 |
+
gr.update(visible=vis_seed), \
|
| 634 |
+
gr.update(visible=vis_start), \
|
| 635 |
+
gr.update(visible=vis_gen_video, value=None)
|
| 636 |
+
|
| 637 |
+
def fn_vis_traj():
|
| 638 |
+
# import pdb; pdb.set_trace()
|
| 639 |
+
# global traj_list
|
| 640 |
+
# xy_range = 1024
|
| 641 |
+
# print(traj_list)
|
| 642 |
+
global traj_list
|
| 643 |
+
print(traj_list)
|
| 644 |
+
points = process_points(traj_list)
|
| 645 |
+
imgs = []
|
| 646 |
+
for idx in range(16):
|
| 647 |
+
bg_img = np.ones((1024, 1024, 3), dtype=np.uint8) * 255
|
| 648 |
+
for i in range(15):
|
| 649 |
+
p = points[i]
|
| 650 |
+
p1 = points[i+1]
|
| 651 |
+
cv2.line(bg_img, p, p1, (255, 0, 0), 2)
|
| 652 |
+
|
| 653 |
+
if i == idx:
|
| 654 |
+
cv2.circle(bg_img, p, 2, (0, 255, 0), 20)
|
| 655 |
+
|
| 656 |
+
if idx==(15):
|
| 657 |
+
cv2.circle(bg_img, points[-1], 2, (0, 255, 0), 20)
|
| 658 |
+
|
| 659 |
+
imgs.append(bg_img.astype(np.uint8))
|
| 660 |
+
|
| 661 |
+
path = tempfile.NamedTemporaryFile(suffix='.mp4', delete=False).name
|
| 662 |
+
writer = imageio.get_writer(path, format='mp4', mode='I', fps=10)
|
| 663 |
+
for img in imgs:
|
| 664 |
+
writer.append_data(img)
|
| 665 |
+
writer.close()
|
| 666 |
+
|
| 667 |
+
vis_step3_prompt_generate = True
|
| 668 |
+
vis_prompt = True
|
| 669 |
+
vis_num_samples = True
|
| 670 |
+
vis_seed = True
|
| 671 |
+
vis_start = True
|
| 672 |
+
vis_gen_video = True
|
| 673 |
+
return path, gr.update(visible=vis_step3_prompt_generate), \
|
| 674 |
+
gr.update(visible=vis_prompt), \
|
| 675 |
+
gr.update(visible=vis_num_samples), \
|
| 676 |
+
gr.update(visible=vis_seed), \
|
| 677 |
+
gr.update(visible=vis_start), \
|
| 678 |
+
gr.update(visible=vis_gen_video, value=None)
|
| 679 |
+
|