Release notes#

Main branch#

  • VideoFileStream and VideoFile attributes are more robust to missing stream information provided by ffprobe

  • Documentation improvements

  • Switched from develop / master branch system to main branch system with frequent PR merges

  • Fixes for a number of minor inconsistencies or other problems in code

Version 0.6#

Commits by Gabriel Beckers.

  • modernize package structure

  • depends on ffmpeg 8.0.1

  • GitHub Action tests now use conda ffmpeg package

  • Dependencies updated to recent versions

  • simplified README

  • add overwrite parameters to many functions

  • ffmeg version is added to saved metadata movement detection

  • archived coordinates are extracted with ‘data’ filter (safer option since Python 3.12)

  • use ‘copy’ as default codec argument when extracting audio from video (doesn’t change data)

  • improved audio codec handling when extracting audio (best muxer chosen automatically)

  • refactored ffmpeg module: a.o. better error handling

  • implemented a VideoFile class

  • improved stream awareness (files can have multiple video and audio streams)

  • started type hinting code

  • seriously extended documentation with Recipes (short howtos)

  • added vstack_frames function

  • improved banner docs and github

  • Frames.draw_rectangle points format now consistent with other methods and functions

Version 0.5#

Commits by Carien Mol and Gabriel Beckers.

  • depends on ffmpeg 4.2.2

  • bug correction in notebook 5: fix copy and update of settings dictionary when looking at range of parameter values.

  • extract_audio has more argument options, such as specifying the codec and channel number that should be extracted.

  • new function extract_archivedcoordinatedata in coordinatearrays module.

  • new tutorial notebook 6_batchdetection: with examples of how to use the batch function for movement detect, how to archive coordinate data to save memory space, and how to extract archived coordinate data in a notebook.

  • added option in module parameterselection to inspect count statistics with different combinations of settings. Previously only mean statistics could be used.

  • prepare for future use of pandas stack

  • modernize install system (move to pyproject.toml)

Version 0.4#

Commits by Carien Mol and Gabriel Beckers.

New submodule parameterselection, part of module movementdetection:
  • ParameterSelection class with the results as Pandas DataFrame, and methods to easily view and compare the results of various parameters.

  • apply_all_parameters and load_parameterselection function.

  • parameterselection notebook.

Big change to movementdetection module:
  • There is now one high-level function detect_movement, in which the type of background subtraction algorithm that should be used can be added as optional parameter.

  • There is an easy-to-use default parameters setting for this function that takes care of many of the pre- and postprocessing steps.

  • There is also a optional settings parameters in which you can easily set various processing steps, as wel as the parameters values for the background subtraction algorithm, to be in full control of all settings.

Tutorial with five notebooks:
  • The notebooks of previous versions are modified into a more cohesive tutorial. The first three notebooks demonstrate some basic functionalities of Birdwatcher. The fourth and fifth notebook are specifically designed to apply movement detection on the user’s own videos.

Other changes:
  • product_dict function in utils module.

  • some restrictions in what is imported automatically via the init file.

  • modified existing tests and added new tests.

Some corrections:
  • switch frameheight/framewidth when calling framecolor or framegray.

  • also include first frame when calculating the mean frame in calc_meanframe.

Version 0.3#

Commits by Carien Mol and Gabriel Beckers.

New methods:
  • peek_frames method for Frames for peeking the first frame

  • show method for Frames, VideoFileStream and CoordinateArrays

  • save_nonzero method for Frames to directly save nonzero pixel coordinates as CoordinateArrays

  • get_coordmedian method for CoordinateArrays

  • edge_detection method for Frames

Other changes:
  • bug correction: switch frameheight/framewidth when initializing Frames object

  • find_nonzero methods now can work with color frames

  • apply_backgroundsegmenter method on Frames for background segmentation

  • improved logging of processing steps

  • many improvements docstrings and code consistency

  • added more tests