arcjetCV Tutorial
[ ]:
!pip install git+https://github.com/magnus-haw/arcjetCV.git@develop -q
!pip install segmentation-models-pytorch -q
!pip install imageio[pyav] -q # to load m4v
!wget https://github.com/magnus-haw/arcjetCV/raw/develop/tests/arcjet_test.mp4 -q # example video
[2]:
# functions to convert and display videos
from moviepy.editor import ipython_display as display_video
import imageio
def convert_and_crop_video(video_path, output_path, fps=30, max_frames=None):
frames = imageio.mimread(video_path, memtest=False)
if max_frames is None:
n_frames = len(frames)
else:
n_frames = min(max_frames, len(frames))
writer = imageio.get_writer(output_path, fps=fps)
for i in range(n_frames):
writer.append_data(frames[i])
writer.close()
[ ]:
# crop example video and display it
convert_and_crop_video("arcjet_test.mp4", "arcjet_test_crop.mp4", max_frames=600)
display_video("arcjet_test_crop.mp4")
[ ]:
import arcjetCV as arcv
video = arcv.Video("arcjet_test.mp4")
videometa = arcv.VideoMeta(video, "arcjet_test.meta")
videometa["FLOW_DIRECTION"] = "right"
videometa.set_frame_crop(10, 700, 100, 425)
videometa["FIRST_GOOD_FRAME"] = 100
videometa["LAST_GOOD_FRAME"] = 400
processor = arcv.ArcjetProcessor(videometa)
output = processor.process_all(
video,
options={"SEGMENT_METHOD": "CNN"},
first_frame=videometa["FIRST_GOOD_FRAME"],
last_frame=videometa["LAST_GOOD_FRAME"],
frame_stride = 5,
output_prefix="arcjet_test",
write_json = True,
write_video = True
)
[ ]:
# convert annotated video from m4v to mp4 and display it
convert_and_crop_video("video_out_arcjet_test_100_400.m4v", "video_out_arcjet_test.mp4")
display_video('video_out_arcjet_test.mp4')