Geometry computations: Example 7
[1]:
from simba.mixins.config_reader import ConfigReader
from simba.mixins.geometry_mixin import GeometryMixin
from simba.mixins.image_mixin import ImageMixin
from simba.utils.read_write import read_df
from simba.plotting.geometry_plotter import GeometryPlotter
import os
import numpy as np
from ipywidgets import Video
from IPython.display import HTML
[2]:
# FIRST WE DEFINE THE PATH TO OUR SIMBA PROJECT AND THE NAME OF A VIDEO IN THE SIMBA PROJECT WE WANT TO WORK WITH
CONFIG_PATH = '/Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/project_config.ini'
VIDEO_NAME = '2022-06-20_NOB_DOT_4'
[3]:
# WE READ IN THE SIMBA PROJECT CONFIG, AND GET THE ANIMAL BODY-PART DATA FOR THE VIDEO WE DEFINED ABOVE.
# NOTE: WE DROP THE TAIL END BODY-PART AS WE DON'T WANT THAT BODY-PART TO BE DEFINING THE BOUNDARIES OF OUR ANIMAL
cfg = ConfigReader(config_path=CONFIG_PATH, read_video_info=False)
data = read_df(os.path.join(cfg.outlier_corrected_dir, VIDEO_NAME + f'.{cfg.file_type}'), file_type=cfg.file_type)
video_path = os.path.join(cfg.video_dir, VIDEO_NAME + '.mp4')
animal_df = data[[x for x in data.columns if x in cfg.animal_bp_dict['Animal_1']['X_bps'] + cfg.animal_bp_dict['Animal_1']['Y_bps']]]
animal_data = animal_df.drop(['Tail_end_x', 'Tail_end_y'], axis=1).values.reshape(-1, 7, 2).astype(np.int)
[4]:
# WE CREATE POLYGON GEOMETRIES BASED ON THE ANIMAL BODY-PARTS, AND VISUALIZE THE GEOMETRIES.
# NOTE: WE USE ONLY THE FIRST 300 POLYGONS TO VISUALIZE THE FIRST 300 FRAMES AS ITS QUICKER.
# NOTE THATE WE GET A WARNING ABOUT THIS, WHICH WE IGNORE.
animal_polygons = GeometryMixin.bodyparts_to_polygon(data=animal_data)[:300]
GeometryPlotter(config_path=CONFIG_PATH,
geometries=[animal_polygons],
video_name=VIDEO_NAME,
thickness=10,
bg_opacity=1.0,
verbose=False).run()
SIMBA WARNING: FrameRangeWarning: Geometry 1 contains 300 shapes but video has 9000 frames warning
POLYGON ((600.8811978618355 484.0070820517447, 213.0065899891334 570.1146147909743, 774.0852193056179 531.996362218247, 810.9997520408987 512.0222678404626, 768.9432086007599 498.0016139339052, 600.8811978618355 484.0070820517447)) POLYGON ((612.9196351173459 482.0032344881388, 556.0082749584689 497.8716199314532, 604.2673322255175 525.963604421534, 780.0112844957753 534.850194620572, 818.9828321047227 528.8154978213504, 786.149805379428 501.0112844957752, 612.9196351173459 482.0032344881388))
Section 0/8 complete...
Section 1/8 complete...
Section 2/8 complete...
Section 3/8 complete...
Section 4/8 complete...
Section 5/8 complete...
Section 6/8 complete...
Section 7/8 complete...
Joining 2022-06-20_NOB_DOT_4 geometry video...
SIMBA COMPLETE: Video concatenated (elapsed time: 7.1826s) complete
SIMBA COMPLETE: Geometry video /Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/2022-06-20_NOB_DOT_4.mp4 complete! (elapsed time: 36.2837s) complete
[5]:
# THIS IS HOW THE POLYGONS LOOK LIKE: NOTE THAT THE BLACK PORTIONS ARE NOT PART OF THE POLYGONS, IT'S JUST VISUALIZATION
# PADDING TO MAKE SURE THAT THE VIDEO HAS UNIFORM SIZE ACROSS ITS ENTIRE LENGTH EVEN THOUGH THE ANIMAL SHIFT ITS SHAPE.
video_url = 'https://raw.githubusercontent.com/sgoldenlab/simba/master/docs/_static/img/geometry_example_7_1_clipped.webm'
HTML(f''' <video width="800" height="800" controls> <source src="{video_url}" type="video/mp4"> </video>
''')
[5]:
[6]:
# NOTE THAT YOU CAN CONTROL THE THICKNESS OF THE BOUNDARY POLYGON AND THE OPACITY OF THE VIDEO BACKGROUND.
# HERE WE MAKE THE LINES A LITTLE THICKER AND THE THE OPACITY A LITTLE LIGHTER
animal_polygons = GeometryMixin.bodyparts_to_polygon(data=animal_data)[:300]
GeometryPlotter(config_path=CONFIG_PATH,
geometries=[animal_polygons],
video_name=VIDEO_NAME,
thickness=15,
bg_opacity=0.5,
verbose=False).run()
SIMBA WARNING: FrameRangeWarning: Geometry 1 contains 300 shapes but video has 9000 frames warning
POLYGON ((600.8811978618355 484.0070820517447, 213.0065899891334 570.1146147909743, 774.0852193056179 531.996362218247, 810.9997520408987 512.0222678404626, 768.9432086007599 498.0016139339052, 600.8811978618355 484.0070820517447)) POLYGON ((612.9196351173459 482.0032344881388, 556.0082749584689 497.8716199314532, 604.2673322255175 525.963604421534, 780.0112844957753 534.850194620572, 818.9828321047227 528.8154978213504, 786.149805379428 501.0112844957752, 612.9196351173459 482.0032344881388))
Section 0/8 complete...
Section 1/8 complete...
Section 2/8 complete...
Section 3/8 complete...
Section 4/8 complete...
Section 5/8 complete...
Section 6/8 complete...
Section 7/8 complete...
Joining 2022-06-20_NOB_DOT_4 geometry video...
SIMBA COMPLETE: Video concatenated (elapsed time: 4.3408s) complete
SIMBA COMPLETE: Geometry video /Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/2022-06-20_NOB_DOT_4.mp4 complete! (elapsed time: 48.8753s) complete
[7]:
# THIS IS HOW THE SHAPES LOOK LIKE: NOTE THAT THE BLACK PORTIONS ARE NOT PART OF THE POLYGONS, IT'S JUST VISUALIZATION
# PADDING TO MAKE SURE THAT THE VIDEO HAS UNIFORM SIZE ACROSS ITS ENTIRE LENGTH EVEN THOUGH THE ANIMAL SHIFT ITS SHAPE.
video_url = 'https://raw.githubusercontent.com/sgoldenlab/simba/master/docs/_static/img/geometry_example_7_2_clipped.webm'
HTML(f''' <video width="800" height="800" controls> <source src="{video_url}" type="video/mp4"> </video>
''')
[7]:
[8]:
# WE CAN FORCE THE POLYGONS INTO RECTANGLES, IF YOU NEED OR WANT TO WORK WITH RECTANGLES INSTEAD OF MORE COMPLEX
# POLYGONS, WHICH ALSO CAN SAVE SOME MEMORY AND RUNTIME
animal_rectangles = GeometryMixin().multiframe_minimum_rotated_rectangle(shapes=animal_polygons)
GeometryPlotter(config_path=CONFIG_PATH,
geometries=[animal_rectangles],
video_name=VIDEO_NAME,
thickness=8,
bg_opacity=0.4,
verbose=False).run()
SIMBA COMPLETE: Rotated rectangles complete. (elapsed time: 0.173s) complete
SIMBA WARNING: FrameRangeWarning: Geometry 1 contains 300 shapes but video has 9000 frames warning
POLYGON ((208.9655492604527 510.6328327041817, 808.1398698302264 469.9264559270188, 812.1809105589073 529.4082380138116, 213.0065899891335 570.1146147909744, 208.9655492604527 510.6328327041817)) POLYGON ((556.9537663907289 479.1732893658065, 820.8183490416543 492.5157480038884, 818.5790713044573 536.8003961030421, 554.7144886535319 523.4579374649602, 556.9537663907289 479.1732893658065))
Section 0/8 complete...
Section 1/8 complete...
Section 2/8 complete...
Section 3/8 complete...
Section 4/8 complete...
Section 5/8 complete...
Section 6/8 complete...
Section 7/8 complete...
Joining 2022-06-20_NOB_DOT_4 geometry video...
SIMBA COMPLETE: Video concatenated (elapsed time: 3.6825s) complete
SIMBA COMPLETE: Geometry video /Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/2022-06-20_NOB_DOT_4.mp4 complete! (elapsed time: 40.9096s) complete
[9]:
# THIS IS HOW THE SHAPES LOOK LIKE: NOTE THAT THE BLACK PORTIONS ARE NOT PART OF THE POLYGONS, IT'S JUST VISUALIZATION
# PADDING TO MAKE SURE THAT THE VIDEO HAS UNIFORM SIZE ACROSS ITS ENTIRE LENGTH EVEN THOUGH THE ANIMAL SHIFT ITS SHAPE.
video_url = 'https://raw.githubusercontent.com/sgoldenlab/simba/master/docs/_static/img/geometry_example_7_3_clipped.webm'
HTML(f''' <video width="800" height="800" controls> <source src="{video_url}" type="video/mp4"> </video>
''')
[9]:
[10]:
# WE CAN BUFFER THE POLYGONS, TO GIVE THEM A LITTLE EXTRA SPACE AROUND THE ANIMALS BODY, IN CASE IT IS A LITTLE TIGHT AND
# YOUR POSE ESTIMATION KEY-POINTS DEMANDS IT HERE WE INCREASE THE POLYGON AREA WITH 10CM2
animal_polygons_buffered = GeometryMixin.bodyparts_to_polygon(data=animal_data[:300], parallel_offset=100, pixels_per_mm=1.88)
GeometryPlotter(config_path=CONFIG_PATH,
geometries=[animal_polygons_buffered],
video_name=VIDEO_NAME,
thickness=10,
bg_opacity=1.0,
verbose=False).run()
SIMBA WARNING: FrameRangeWarning: Geometry 1 contains 300 shapes but video has 9000 frames warning
POLYGON ((594.703486677281 432.3753487424684, 197.6216030121255 519.594165892155, 179.6128640038734 529.6698019099348, 169.4044338722866 541.3602464789109, 163.0201813334584 555.5066191409135, 161.349269424072 576.0745839216397, 167.6599968766594 595.7216661693751, 180.9956827470572 611.4694470986424, 199.3346906002576 620.9306263481005, 219.8969004770597 622.6709271302836, 783.7698796519472 583.0917407233284, 798.7382068365805 577.8723919008894, 847.1040745341971 549.8455763988441, 860.4387565294739 528.2767269363485, 862.2271289021849 502.9818512634484, 854.9748625263438 483.9596408593528, 841.0870049935058 469.0745050053731, 822.6125707854953 460.5225966255011, 781.4799204047559 447.4902767752441, 594.703486677281 432.3753487424684)) POLYGON ((613.9514212617331 430.0085403335337, 593.5548388699198 433.6959868912761, 548.2533825613939 445.7267115690751, 524.6447145002709 456.0222022941767, 508.67698884606 476.2310635763666, 504.1211033117242 501.5808218373239, 509.5165908393181 521.5441256894213, 522.1409969734499 537.9230498333352, 587.156013063716 575.2521651681825, 602.6010540190955 577.9815340485958, 784.2687538483182 587.8991044184975, 841.5262831461133 576.492252013659, 858.12542217635 563.6258645403936, 868.423979378261 545.3224478452438, 870.8048527041934 524.4560445767552, 862.2023904419826 499.7570747151636, 851.6201027484558 488.0281963884518, 817.7042720345238 459.5283725910943, 804.0102340699966 452.1539222330991, 788.7651668405925 449.0721826225218, 613.9514212617331 430.0085403335337))
Section 0/8 complete...
Section 1/8 complete...
Section 2/8 complete...
Section 3/8 complete...
Section 4/8 complete...
Section 5/8 complete...
Section 6/8 complete...
Section 7/8 complete...
Joining 2022-06-20_NOB_DOT_4 geometry video...
SIMBA COMPLETE: Video concatenated (elapsed time: 5.4889s) complete
SIMBA COMPLETE: Geometry video /Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/2022-06-20_NOB_DOT_4.mp4 complete! (elapsed time: 45.8568s) complete
[11]:
# THIS IS HOW THE SHAPES LOOK LIKE: NOTE THAT THE BLACK PORTIONS ARE NOT PART OF THE POLYGONS, IT'S JUST VISUALIZATION
# PADDING TO MAKE SURE THAT THE VIDEO HAS UNIFORM SIZE ACROSS ITS ENTIRE LENGTH EVEN THOUGH THE ANIMAL SHIFT ITS SHAPE.
video_url = 'https://raw.githubusercontent.com/sgoldenlab/simba/master/docs/_static/img/geometry_example_7_4_clipped.webm'
HTML(f''' <video width="800" height="800" controls> <source src="{video_url}" type="video/mp4"> </video>
''')
[11]:
[12]:
# WE CAN CROP OUT THE SHAPES FROM THE REST OF THE VIDEOS, TO PERFORM DOWNSTREAM ANALYSIS OF WHATS HAPPENING INSIDE OF THE
# SHAPES DOWNSTREAM.
# HERE WE READ IN THE FIRST 300 FRAMES OF THE VIDE, AND THE CROP OUT THE BUFFERED POLYGONS FROM EACH OF THE 300 FRAMES, AND SAVE IT AS A VIDEO
# SO WE CAN SEE WHAT WE ARE WORKING WITH AS AN EXAMPLE.
imgs = ImageMixin().read_img_batch_from_video(video_path=video_path, start_frm=0, end_frm=299)
imgs = np.stack(list(imgs.values()))
animal_polygons_buffered = np.array(animal_polygons_buffered).T.reshape(-1, 1)
sliced_buffered_animal_imgs = ImageMixin().slice_shapes_in_imgs(imgs=imgs, shapes=animal_polygons_buffered)
ImageMixin.img_stack_to_video(imgs=sliced_buffered_animal_imgs,
save_path='/Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/sliced_buffered_animal.mp4',
fps=30,
verbose=False)
SIMBA COMPLETE: Geometry image slicing complete. (elapsed time: 2.9396s) complete
SIMBA COMPLETE: Video /Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/sliced_buffered_animal.mp4 complete (elapsed time: 0.9577s) complete
[13]:
# THIS IS HOW THE SHAPES LOOK LIKE: NOTE THAT THE BLACK PORTIONS ARE NOT PART OF THE POLYGONS, IT'S JUST VISUALIZATION
# PADDING TO MAKE SURE THAT THE VIDEO HAS UNIFORM SIZE ACROSS ITS ENTIRE LENGTH EVEN THOUGH THE ANIMAL SHIFT ITS SHAPE.
video_url = 'https://raw.githubusercontent.com/sgoldenlab/simba/master/docs/_static/img/geometry_example_7_5_clipped.webm'
HTML(f''' <video width="600" height="600" controls> <source src="{video_url}" type="video/mp4"> </video>
''')
[13]:
[14]:
# ... WE COULD ALSO CROP OUT THE ANIMAL SHAPES FROM THE VIDEO WITHOUT BUFFERING THE POLYGON SHAPES
#... ALTHOUGH IT CAN BE A LITTLE TRICKY TOO SEE WHATS GOING ON IN THIS EXAMPLE AS ITS A LISTER HOODED RAT
# AND ITS HEAD IS THE SAME COLOR AS THE BACKGROUND, I dIDN'T MAKE THE BACKGROUND COLOR A PASSABLE ARGUMENT, IF YOU HAVE TROUBLE
# WITH BLACK BACKGROUND LET ME KNOW AND I MAKE IT NON-HARDCODED.
animal_polygons_tighter = np.array(animal_polygons).T.reshape(-1, 1)
sliced_images = ImageMixin().slice_shapes_in_imgs(imgs=imgs, shapes=animal_polygons_tighter)
ImageMixin.img_stack_to_video(imgs=sliced_images,
save_path='/Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/animal_polygons_tighter.mp4',
fps=30,
verbose=False)
SIMBA COMPLETE: Geometry image slicing complete. (elapsed time: 2.7625s) complete
SIMBA COMPLETE: Video /Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/animal_polygons_tighter.mp4 complete (elapsed time: 0.5079s) complete
[15]:
# THIS IS HOW THE SHAPES LOOK LIKE: NOTE THAT THE BLACK PORTIONS ARE NOT PART OF THE POLYGONS, IT'S JUST VISUALIZATION
# PADDING TO MAKE SURE THAT THE VIDEO HAS UNIFORM SIZE ACROSS ITS ENTIRE LENGTH EVEN THOUGH THE ANIMAL SHIFT ITS SHAPE.
video_url = 'https://raw.githubusercontent.com/sgoldenlab/simba/master/docs/_static/img/geometry_example_7_6_clipped.webm'
HTML(f''' <video width="800" height="800" controls> <source src="{video_url}" type="video/mp4"> </video>
''')
[15]:
[16]:
# WE MIGHT JUST WANT THE HEAD OF THE ANIMAL. SO WE DRAW A POLYGON BETWEEN THE EARS AND THE NOSE, BUFFER IT WITH 100MM.
# WE THEN SLICE THOS EPORTION FROM THE VIDEO, AND SAVE IT AS A NEW VIDEO.
animal_head = animal_df[['Nose_x', 'Nose_y', 'Ear_left_x', 'Ear_left_y', 'Ear_right_x', 'Ear_right_y']].values.reshape(-1, 3, 2).astype(np.int)
animal_head_polygons = GeometryMixin.bodyparts_to_polygon(data=animal_head, parallel_offset=100, pixels_per_mm=1.88)[:300]
animal_head_polygons = np.array(animal_head_polygons).T.reshape(-1, 1)
sliced_images = ImageMixin().slice_shapes_in_imgs(imgs=imgs, shapes=animal_head_polygons)
ImageMixin.img_stack_to_video(imgs=sliced_images,
save_path='/Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/animal_head_polygons_sliced.mp4',
fps=30,
verbose=False)
SIMBA COMPLETE: Geometry image slicing complete. (elapsed time: 2.8164s) complete
SIMBA COMPLETE: Video /Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/animal_head_polygons_sliced.mp4 complete (elapsed time: 0.1718s) complete
[17]:
# THIS IS HOW THE SHAPES LOOK LIKE: NOTE THAT THE BLACK PORTIONS ARE NOT PART OF THE POLYGONS, IT'S JUST VISUALIZATION
# PADDING TO MAKE SURE THAT THE VIDEO HAS UNIFORM SIZE ACROSS ITS ENTIRE LENGTH EVEN THOUGH THE ANIMAL SHIFT ITS SHAPE.
video_url = 'https://raw.githubusercontent.com/sgoldenlab/simba/master/docs/_static/img/geometry_example_7_7_clipped.webm'
HTML(f''' <video width="800" height="800" controls> <source src="{video_url}" type="video/mp4"> </video>
''')
[17]:
[18]:
# ... WE COULD ALSO CROP OUT THE ANIMAL HEAD FROM THE VIDEO WITHOUT BUFFERING THE POLYGON SHAPES SO MUCH.
animal_head_polygons = GeometryMixin.bodyparts_to_polygon(data=animal_head, parallel_offset=25, pixels_per_mm=1.88)[:300]
animal_head_polygons_reshaped = np.array(animal_head_polygons).T.reshape(-1, 1)
sliced_images = ImageMixin().slice_shapes_in_imgs(imgs=imgs, shapes=animal_head_polygons_reshaped)
ImageMixin.img_stack_to_video(imgs=sliced_images,
save_path='/Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/animal_head_polygons_sliced_tighter.mp4',
fps=30,
verbose=False)
SIMBA COMPLETE: Geometry image slicing complete. (elapsed time: 3.029s) complete
SIMBA COMPLETE: Video /Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/animal_head_polygons_sliced_tighter.mp4 complete (elapsed time: 0.0607s) complete
[19]:
# THIS IS HOW THE SHAPES LOOK LIKE: NOTE THAT THE BLACK PORTIONS ARE NOT PART OF THE POLYGONS, IT'S JUST VISUALIZATION
# PADDING TO MAKE SURE THAT THE VIDEO HAS UNIFORM SIZE ACROSS ITS ENTIRE LENGTH EVEN THOUGH THE ANIMAL SHIFT ITS SHAPE.
video_url = 'https://raw.githubusercontent.com/sgoldenlab/simba/master/docs/_static/img/geometry_example_7_8_clipped.webm'
HTML(f''' <video width="800" height="800" controls> <source src="{video_url}" type="video/mp4"> </video>
''')
[19]:
[20]:
# ANOTHER ALTERNATIVETO WORK WITH CIRCLES, IS TO FIND THE CENTER OF THE ANIMAL HEAD POLYGON, THEN USE THAT AS THE CENTERPOINT WHEN DRAWING A CIRCLE
# TO CROP OUT THE ANIMALS HEAD.
head_centers = GeometryMixin.get_center(shape=animal_head_polygons)
head_circles = GeometryMixin.bodyparts_to_circle(data=head_centers, parallel_offset=150, pixels_per_mm=1.88)
head_circles = np.array(head_circles).T.reshape(-1, 1)
sliced_images = ImageMixin().slice_shapes_in_imgs(imgs=imgs, shapes=head_circles)
ImageMixin.img_stack_to_video(imgs=sliced_images,
save_path='/Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/sliced_head_circles.mp4',
fps=30,
verbose=False)
SIMBA COMPLETE: Geometry image slicing complete. (elapsed time: 2.3375s) complete
SIMBA COMPLETE: Video /Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/sliced_head_circles.mp4 complete (elapsed time: 0.1322s) complete
[21]:
# THIS IS HOW THE SHAPES LOOK LIKE: NOTE THAT THE BLACK PORTIONS ARE NOT PART OF THE POLYGONS, IT'S JUST VISUALIZATION
# PADDING TO MAKE SURE THAT THE VIDEO HAS UNIFORM SIZE ACROSS ITS ENTIRE LENGTH EVEN THOUGH THE ANIMAL SHIFT ITS SHAPE.
video_url = 'https://raw.githubusercontent.com/sgoldenlab/simba/master/docs/_static/img/geometry_example_7_9_clipped.webm'
HTML(f''' <video width="800" height="800" controls> <source src="{video_url}" type="video/mp4"> </video>
''')
[21]:
[22]:
# ... WE COULD ALSO CROP OUT THE ANIMAL HEAD CIRCLE FROM THE VIDEO WITHOUT BUFFERING THE POLYGON SHAPES SO MUCH.
head_circles = GeometryMixin.bodyparts_to_circle(data=head_centers, parallel_offset=50, pixels_per_mm=1.88)
head_circles = np.array(head_circles).T.reshape(-1, 1)
sliced_images = ImageMixin().slice_shapes_in_imgs(imgs=imgs, shapes=head_circles)
ImageMixin.img_stack_to_video(imgs=sliced_images,
save_path='/Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/sliced_head_circles_tighter.mp4',
fps=30,
verbose=False)
SIMBA COMPLETE: Geometry image slicing complete. (elapsed time: 2.621s) complete
SIMBA COMPLETE: Video /Users/simon/Desktop/envs/simba/troubleshooting/RAT_NOR/project_folder/frames/output/geometry_visualization/sliced_head_circles_tighter.mp4 complete (elapsed time: 0.0371s) complete
[23]:
# THIS IS HOW THE SHAPES LOOK LIKE: NOTE THAT THE BLACK PORTIONS ARE NOT PART OF THE POLYGONS, IT'S JUST VISUALIZATION
# PADDING TO MAKE SURE THAT THE VIDEO HAS UNIFORM SIZE ACROSS ITS ENTIRE LENGTH EVEN THOUGH THE ANIMAL SHIFT ITS SHAPE.
video_url = 'https://raw.githubusercontent.com/sgoldenlab/simba/master/docs/_static/img/geometry_example_7_10_clipped.webm'
HTML(f''' <video width="800" height="800" controls> <source src="{video_url}" type="video/mp4"> </video>
''')
[23]:
[ ]: