Digital Image Processing in Python
An open, interactive textbook: every section is a Jupyter notebook you can run, change and break, from sampling and color to compression, segmentation and neural networks. Free under CC BY-SA 4.0.
Each operation in Fig. 1 links to the notebook that teaches it.