Summer Code Jam 2023

Below is the list of approved frameworks that you can use for the code jam. Please work with your team to choose a library (or multiple) that everyone can and want to develop with. If there is a library not listed below that you think should be here, you're welcome to discuss it with the Events Team over in the Discord server.

Other libraries can be used to help build your application, but if their primary purpose is image manipulation or processing then they must be approved or from this list. In particular, if you'd like to use a graph/plot creating library similar to Matplotlib or a machine learning framework/model, double check with us before deciding to use it.

Approved Frameworks

Pillow

Pillow is a fork of the Python Imaging Library (PIL). The Python Imaging Library adds image processing capabilities to your Python interpreter. This library provides extensive file format support, an efficient internal representation, and fairly powerful image processing capabilities. The core image library is designed for fast access to data stored in a few basic pixel formats. It should provide a solid foundation for a general image processing tool.

OpenCV-Python

OpenCV (Open Source Computer Vision Library: http://opencv.org) is an open-source library that includes several hundreds of computer vision algorithms.

NumPy

NumPy is the fundamental package for scientific computing with Python.

scikit-image

scikit-image is a collection of algorithms for image processing.

matplotlib

Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python. Matplotlib makes easy things easy and hard things possible.

PyQtGraph

PyQtGraph is intended for use in mathematics / scientific / engineering applications. Despite being written entirely in Python, the library is fast due to its heavy leverage of numpy for number crunching, Qt's GraphicsView framework for 2D display, and OpenGL for 3D display.

SciPy

SciPy is a collection of mathematical algorithms and convenience functions built on NumPy. It adds significant power to Python by providing the user with high-level commands and classes for manipulating and visualizing data.

Mahotas

Mahotas is a computer vision and image processing library for Python. It includes many algorithms implemented in C++ for speed while operating in numpy arrays and with a very clean Python interface. Mahotas currently has over 100 functions for image processing and computer vision and it keeps growing.

VisPy

VisPy is a high-performance interactive 2D/3D data visualization library. VisPy leverages the computational power of modern Graphics Processing Units (GPUs) through the OpenGL library to display very large datasets.

bokeh

Bokeh is an interactive visualization library for modern web browsers. It provides elegant, concise construction of versatile graphics and affords high-performance interactivity across large or streaming datasets. Bokeh can help anyone who wants to create interactive plots, dashboards, and data applications quickly and easily.

ffmpeg-python

A Python wrapper for the powerful FFmpeg software.

⚠ You can use other ffmpeg Python bindings, but both with this one and others, make sure that it works well with newer Python versions and be mindful of issues reported in their repositories.

imageio

Imageio is a Python library that provides an easy interface to read and write a wide range of image data, including animated images, video, volumetric data, and scientific formats. It is cross-platform, runs on Python 3.8+, and is easy to install.

Q: Can I use machine learning libraries?

A: Yes, you can use libraries such as scikit-learn, PyTorch, TensorFlow, etc. However:

  1. Your project should be easy to install and run, so it can't require a dedicated GPU or otherwise significant computational resources.
  2. This might prove to be a barrier for your teammates to contribute to the project if they're not knowledgeable in the field.
  3. We would still like to see more "classical" image processing techniques. This isn't an ML code jam.
  4. If you use pretrained models you need to specify where you took them from, and they need to be compatible with the project license.