Python for Computer Vision
Ahmed Fawzy Gad
FACULTY OF COMPUTERS AND INFORMATION
والمعلومات الحاسبات كلية
Tuesday 26 September 2017
• Traditional Data Storage in Python
• NumPy Arrays
Goals of Computer Vision
• Computer vision aims to enable computer to see, identify objects,
and analyze such images to understand them like or better than
• To do this, computer needs to store and process images to get useful
Storing Data in Python
Which one is suitable for
List Vs. Tuple
• Image is MD. Which one supports MD storage?
• Which one supports updating its elements?
Tuples are immutable.
Python List for Image Storage
• List is mutable and thus
we can edit the image
pixels easily and apply
• So, lets start storing an
image into a Python list.
The following code reads
an image in the img_list
Very time consuming for simple operations.
• Why not applying arithmetic operations rather than looping?
img_list = img_list + 50
List is complex. What is the alternative?
• List adds more complexity in making operations over the images. One
drawback was seen previously is that list operations are time
consuming because they require pixel by pixel processing.
• The best way for storing images is using arrays.
• Rather than being time efficient in processing images, arrays has
many other advantages. Can you imagine what?
• Lists are already available in Python. To use Python arrays, additional
libraries must be used.
• The library supporting arrays in Python is called Numerical Python
• NumPy can be installed using Python command-line.
• It is also available in all-in-one packages like Anaconda.
• Based on your environment, you can install new modules.
• For traditional Python distributions, use the PIP installer.
pip install numpy
• For Anaconda, use the conda installed
conda install numpy
• But it is by default available in Anaconda.
Importing a Python Module
• After installing NumPy, we can import it in our programs and scripts.
Array Data Type
• The problem is expecting uint8 data type but another data type was
• To know what is the array data type, use the dtype array property.
• Change array type to uint8.
How to make the conversion to uint8?
Controlling Array dtype
• When creating the array, set the dtype argument of numpy.array to
the desired data type.
• dtype argument can be set to multiple types.
Controlling Array dtype
• After array being created, use the astype method of numpy.ndarray.
• It make a new copy of the array after being casted to the specified
type in the dtype argument.
• Arithemetic Operations
• Operations between arrays
More Array Creation Methods
• Array Creation
arange vs. linspace
Array Indexing & Slicing
• Indexing can be forward or backward.
• Forward indexing: from start to end.
• Backward indexing: from end to start.
• General form of indexing:
• In backward indexing, the index of the last element is -1.
Indexing & Slicing Examples – 1D Array
• Forward: my_array[start=0:stop=6:step=2]
• Backward: my_array[start=-1:stop=-6:step=-2]
• Get all elements starting from index 3
Indexing & Slicing Examples – 2D Array
• For MD arrays, indexing can be applied for each individual dimension.
Intersection between the different dimensions will be returned.
• Forward: my_array[start=0:stop=3:step=2, start=1:stop=4:step=1]
• Forward: my_array[start=-1:stop=-3:step=-1, start=0:stop=3:step=1]
Scientific Python (SciPy)
• The main use of NumPy is to support numerical
arrays in Python. According to the official
documentation, NumPy supports nothing but the
array data type and most basic operations:
indexing, sorting, reshaping, basic elementwise
• SciPy supports everything in NumPy but also adds
new features not existing in NumPy. We can
imagine that NumPy is a subset of SciPy.
• Let`s explore what is in SciPy.
• SciPy contains a collection of algorithms and functions based on
NumPy. User can use high-level commands to perform complex
• SciPy is organized into a number of subpackages.
SciPy for Image Processing
• SciPy provides modules for working with images from reading,
processing, and saving an image.
• This example applies the Sobel edge detector to an image using SciPy.