A minimal and fast image library for Python and C++.
Lycon is a small subset of optimized image operations derived from OpenCV.
Current set of features include:
Tested on:
2.7.6
and 3.5.2
.2.7.11
and 3.5.1
.pip install lycon
Native extension dependencies:
Single-line command for installing all dependencies:
sudo apt-get install cmake build-essential libjpeg-dev libpng-dev
When working within an Anaconda Python distribution, it is recommended to use the latest cmake
version (3.6
or newer). Older versions can lead to a mismatch between the libpng
and libjpeg
headers used to build Lycon (usually the system headers), and the linked library (which may be preempted by the Anaconda-scoped version). To install the latest cmake
version:
conda install cmake
import lycon
# Load an image as a numpy array
img = lycon.load('mittens.jpg')
# Resize the image using bicubic interpolation
resized = lycon.resize(img, width=256, height=512, interpolation=lycon.Interpolation.CUBIC)
# Crop the image (like any regular numpy array)
cropped = resized[:100, :200]
# Save the image
lycon.save('cropped-mittens.png', cropped)
Compared to other image processing libraries (OpenCV, pillow, scikit-image), Lycon offers a very limited set of operations. Intended usages include data loaders for deep learning, mass image resizing, etc.
pip
RGB
ordering (vs OpenCV's BGR
)However, if you already have OpenCV installed, Lycon's advantages are minimal.
Operation | Lycon | OpenCV | PIL | Scikit-Image |
---|---|---|---|---|
Upsample: Nearest | 0.1944 | 0.1948 (1x) | 2.1342 (11x) | 30.8982 (158.9x) |
Upsample: Bilinear | 0.4852 | 0.4940 (1x) | 7.2940 (15x) | 45.9095 (94.6x) |
Upsample: Bicubic | 1.8162 | 1.8182 (1x) | 8.9589 (4.9x) | 120.1645 (66.1x) |
Upsample: Lanczos | 4.5641 | 4.5714 (1x) | 10.7517 (2.3x) | |
Upsample: Area | 0.4801 | 0.4931 (1x) | ||
Downsample: Nearest | 0.0183 | 0.0181 (1x) | 0.4379 (24.2x) | 3.6101 (199.9x) |
Downsample: Bilinear | 0.0258 | 0.0257 (1x) | 1.3122 (51x) | 4.8487 (188.4x) |
Downsample: Bicubic | 0.1324 | 0.1329 (1x) | 1.8153 (13.7x) | 9.4905 (71.6x) |
Downsample: Lanczos | 0.3317 | 0.3328 (1x) | 2.4058 (7.2x) | |
Downsample: Area | 0.0258 | 0.0259 (1x) | ||
Read: JPG | 0.3409 | 0.5085 (1.5x) | 1.4081 (4.1x) | 1.4628 (4.3x) |
Read: PNG | 1.2114 | 1.3245 (1.1x) | 1.8274 (1.5x) | 1.8674 (1.5x) |
Write: JPG | 0.4760 | 0.6046 (1.3x) | 2.3823 (5x) | 5.0159 (10.5x) |
Write: PNG | 2.1421 | 2.2370 (1x) | 9.0580 (4.2x) | 11.6060 (5.4x) |
3.2+ (master: a85b4b5)
, Pillow 4.0.0
, skimage 0.12.3
, Python 2.7.3
See LICENSE
for further details.