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')