Package: thumbor-extras
thumbor_extrasSome useful extensions tothumbor- extra filters and detectors.pip install thumbor_extrasDetectorsAdd these detectors to yourthumbor.conf:DETECTORS = [
    'thumbor_extras.detectors.dnn_face_detector',
    'thumbor_extras.detectors.dnn_object_detector'
]dnn_face_detectorhttp://localhost:8888/unsafe/smart/filters:draw_center_of_mass():draw_focal_points(2,.25)/https://farm2.static.flickr.com/1098/998604755_c2155161b3.jpgAn improved face detector that uses a deep neural network. More specifically, it uses theSSD object detection model, trained specifically on faces. According tothe OpenCV repo, it was trained with "some huge and available online dataset." :/For more information on how the normal thumbor face detector compares to this one in both accuracy and efficiency, seethis comparison script.dnn_object_detectorhttp://localhost:8888/unsafe/smart/filters:draw_center_of_mass():draw_focal_points(2)/https://farm2.static.flickr.com/1308/562554257_53f458e042.jpgThe full SSD object detection model, trained on theCOCO dataset. It was built as aMobileNet, a class of efficient, light weight deep neural network models meant to work well in mobile and embedded applications.FiltersAdd these filters to your available filters inthumbor.conf:FILTERS = [
    ...other filters,
    'thumbor_extras.filters.draw_center_of_mass',
    'thumbor_extras.filters.draw_focal_points'
]draw_center_of_massDraws a circle at the calculated center of mass, according to the focal points.Usage:draw_center_of_mass([r, g, b])Examples:draw_center_of_mass(): draws a circle with default red color.draw_center_of_mass(0,0,255): draws a blue circle.draw_focal_pointsDraws a box around the focal points, for displaying the results of the detectors on a given image. Takes optional arguments for box color and line width.Usage:draw_focal_points([line_width, label_height_percentage, show_heatmap, show_labels, show_rainbow, r, g, b])Arguments:line_width: the width of the box lineslabel_height_percentage: the height of the class label as a percentage of the boxshow_heatmap: make the box more opaque for higher-confidence detections, more transparent for less confident detectionsshow_labels: print the class label at the top of the boxshow_rainbow: use a different color for each focal point box; pass false to provide a single color RGB value for all boxesr: R component of RGB color of box, default 0g: G component of RGB color of box, default 255b: B component of RGB color of box, default 0Examples:draw_focal_points(): draws boxes with defaults (each box a different color, with opacity according to the detection confidence).draw_focal_points(5,0,false,false,false,255,0,0): draws solid red boxes with 5 pixel line width, and no class labels.TODOChoose thresholds empiricallyDevelopmentBecause I will definitely forget. Python development can be a pain.# -- ENV --
# use python 2 - thumbor doesn't support 3 yet.
virtualenv thumbor_env --python=/path/to/python2
source thumbor_env/bin/activate

# -- DEVELOP --
pip install -e .

# -- TEST --
# i don't know why setup.py can't install pytest...but it fails without manual install.
# it could be a python2 / mac thing.
pip install pytest
python setup.py test

# -- DISTRIBUTE --
python setup.py sdist
# make a wheel from the source tarball (to use manifest correctly)
pip wheel --no-index --no-deps --wheel-dir dist dist/*.tar.gz
pip install twine
# make sure pip URLs are configured per https://truveris.github.io/articles/configuring-pypirc/
python -m twine upload --repository pypi dist/*