isimple package

Submodules

isimple.app module

isimple.db module

isimple.server module

isimple.video module

exception isimple.video.VideoFileTypeError(*args)[source]

Bases: isimple.core.backend.BackendSetupError

msg = 'Unrecognized video file type'
class isimple.video.VideoFileHandler(video_path, config: isimple.core.config.VideoFileHandlerConfig = None)[source]

Bases: isimple.core.backend.CachingBackendInstance

Interface to video files ~ OpenCV

set_requested_frames(requested_frames: List[int]) → None[source]

Add a list of requested frames. Used to determine which frames to cache in the background and in _resolve_frame

get_total_frames() → int[source]
get_time(frame_number: int) → float[source]
get_fps() → float[source]
read_frame(frame_number: int) → Optional[numpy.ndarray][source]

Wrapper for _read_frame. Enables caching (if in a caching context!) and provides the video file’s path to determine the cache key.

class isimple.video.TransformInterface[source]

Bases: abc.ABC

default = array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]])
validate(transform: numpy.ndarray) → bool[source]
estimate(coordinates: list, shape: tuple) → numpy.ndarray[source]
transform(img: numpy.ndarray, transform: numpy.ndarray, shape: tuple) → numpy.ndarray[source]
class isimple.video.PerspectiveTransform[source]

Bases: isimple.video.TransformInterface

validate(transform: numpy.ndarray) → bool[source]
estimate(coordinates: list, shape: tuple) → dict[source]
transform(img: numpy.ndarray, transform: numpy.ndarray, shape: tuple) → numpy.ndarray[source]
class isimple.video.TransformHandler(shape, config: isimple.core.config.TransformHandlerConfig)[source]

Bases: isimple.core.backend.BackendInstance, isimple.core.backend.Handler

Handles coordinate transforms.

set_implementation(implementation: str) → str[source]
set(transform: numpy.ndarray)[source]

Set the transform matrix

estimate(coordinates: list) → None[source]

Estimate the transform matrix from a set of coordinates. Coordinates should correspond to the corners of the outline of the design, ordered from the bottom left to the top right.

get_coordinates() → Optional[list][source]
inverse(img: numpy.ndarray) → numpy.ndarray[source]
matrix
class isimple.video.FilterInterface[source]

Bases: abc.ABC

Handles pixel filtering operations

set_filter(filter, color: isimple.core.config.HsvColor)[source]
mean_color(filter) → isimple.core.config.HsvColor[source]
filter(image: numpy.ndarray, filter) → numpy.ndarray[source]
class isimple.video.HsvRangeFilter[source]

Bases: isimple.video.FilterInterface

Filters by a range of hues ~ HSV representation

validate(filter)[source]
set_filter(filter: isimple.core.config.HsvRangeFilterConfig, color: isimple.core.config.HsvColor) → isimple.core.config.HsvRangeFilterConfig[source]
mean_color(filter: isimple.core.config.HsvRangeFilterConfig) → isimple.core.config.HsvColor[source]
filter(img: numpy.ndarray, filter: isimple.core.config.HsvRangeFilterConfig) → numpy.ndarray[source]
class isimple.video.FilterHandler(config: isimple.core.config.FilterHandlerConfig = None)[source]

Bases: isimple.core.backend.BackendInstance, isimple.core.backend.Handler

mean_color() → isimple.core.config.HsvColor[source]
set_filter(filter: isimple.core.config.FilterConfig, color: isimple.core.config.HsvColor) → isimple.core.config.FilterConfig[source]
get_filter() → isimple.core.config.FilterConfig[source]
set_implementation(implementation: str) → str[source]
class isimple.video.Mask(mask: numpy.ndarray, name: str, config: isimple.core.config.MaskConfig = None, filter: isimple.video.FilterHandler = None, dpi: float = None, h: float = None)[source]

Bases: isimple.core.backend.BackendInstance

Handles masks in the context of a video file

rows
cols
name
h
dpi
class isimple.video.DesignFileHandler(path: str, h: float, config: isimple.core.config.DesignFileHandlerConfig = None, mask_config: Tuple[isimple.core.config.MaskConfig, ...] = None)[source]

Bases: isimple.core.backend.CachingBackendInstance

peel_design(design_path) → numpy.ndarray[source]
read_masks(design_path) → Tuple[List[numpy.ndarray], List[str]][source]
shape
get_dpi() → float[source]
overlay() → numpy.ndarray[source]
overlay_frame(frame: numpy.ndarray) → numpy.ndarray[source]
masks
get_mask_names() → tuple[source]
isimple.video.frame_to_none(frame: numpy.ndarray) → None[source]
class isimple.video.MaskFilterFunction(mask: isimple.video.Mask, filter: isimple.video.FilterHandler = None)[source]

Bases: isimple.core.features.Feature

value(frame) → Any[source]

Compute the value of the Feature instance for a given frame

state(frame: numpy.ndarray, state: numpy.ndarray = None) → numpy.ndarray[source]

Generate a state image (BGR)

name

Return the name of the feature

class isimple.video.PixelSum(mask: isimple.video.Mask, filter: isimple.video.FilterHandler = None)[source]

Bases: isimple.video.MaskFilterFunction

class isimple.video.Volume_uL(mask: isimple.video.Mask, filter: isimple.video.FilterHandler = None)[source]

Bases: isimple.video.MaskFilterFunction

class isimple.video.VideoAnalyzer(config: isimple.core.config.VideoAnalyzerConfig = None)[source]

Bases: isimple.core.backend.BackendManager

Main video handling class * Load frames from video files * Load mask files * Load/save measurement metadata

connect(gui: isimple.core.common.Manager)[source]
configure()[source]
align()[source]
pick(index: int)[source]
get_name() → str[source]
get_h() → float[source]
get_config() → dict[source]
set_config(config: dict) → None[source]
get_transformed_frame(frame_number: int) → numpy.ndarray[source]
get_inverse_transformed_overlay() → numpy.ndarray[source]
get_frame_overlay(frame_number: int) → numpy.ndarray[source]
get_colors() → List[Tuple[isimple.core.config.HsvColor, ...]][source]
frame_numbers() → Generator[int, None, None][source]
calculate(frame_number: int, update_callback: Callable)[source]

Return a state image for each FeatureSet

analyze()[source]
load_config(path: str = None)[source]

Load video analysis configuration

save_config(path: str = None)[source]

Save video analysis configuration

save(path: str = None)[source]

Save video analysis results & metadata

class isimple.video.MultiVideoAnalyzer(config: isimple.core.config.BackendManagerConfig = None)[source]

Bases: isimple.core.backend.BackendManager

Module contents