0% found this document useful (0 votes)
87 views

Introduction To Computer Vision by Dylan Seychell

This document provides an introduction and overview of computer vision using OpenCV with Python. It begins with defining computer vision and the stages of image acquisition, processing, and understanding. It then introduces OpenCV as an open source library for computer vision that works across platforms and with various programming languages. The document outlines a workshop on using OpenCV with Python to perform image acquisition from files and cameras, basic image processing techniques like blurring and edge detection, and selecting regions of interest. It briefly mentions more advanced topics in computer vision like object detection and classification.

Uploaded by

Pedro Perez
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
87 views

Introduction To Computer Vision by Dylan Seychell

This document provides an introduction and overview of computer vision using OpenCV with Python. It begins with defining computer vision and the stages of image acquisition, processing, and understanding. It then introduces OpenCV as an open source library for computer vision that works across platforms and with various programming languages. The document outlines a workshop on using OpenCV with Python to perform image acquisition from files and cameras, basic image processing techniques like blurring and edge detection, and selecting regions of interest. It briefly mentions more advanced topics in computer vision like object detection and classification.

Uploaded by

Pedro Perez
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 35

Introduction to

Computer Vision
using OpenCV
Dylan Seychell

@DylanSeychell
Hello!
I am Dylan Seychell
Academic and Software Engineer
AI, UX and Computer Vision
@DylanSeychell

2
Presentation Overview
What is Computer Vision?

What is OpenCV?

Workshop:

Image Acquisition

Image Processing

Image Analysis/Understanding

3
@DylanSeychell
Computer Vision
Making computers get a high-level
understanding from images and videos.

4
Stages of Computer Vision

Acquisition Processing Understanding

Covered in this session

5
@DylanSeychell
OpenCV - enabling computer vision
Open Source Computer Vision library

Cross-platform

Free for use under open source BSD license

Can be easily used with Java, Python, C and C++

Supports Machine Learning libraries such as


TensorFlow and Caffe.

https://opencv.org

6
@DylanSeychell
This Session:
We’ll be using OpenCV with Python

New to Python? Check these slides


https://www.slideshare.net/dylsey/introduction-to-python-80851217

7
@DylanSeychell
CodeLab Part 1: Acquisition of Image Data

8
@DylanSeychell
Test the library:

In terminal/CMD type python


>>> import cv2
>>>
9
@DylanSeychell
Importing an image
Create a Python module and write the following code:

import cv2

img = cv2.imread('duomo.jpg',1)
cv2.imshow("Output Window", img)
cv2.waitKey()

This code imports an image and outputs it to a window and waits for any user
keyboard input to terminate.

10
@DylanSeychell
cv2.imread() function
This function is used to load an image and store it into a variable

img = cv2.imread('duomo.jpg',1)

This function accepts 2 parameters:

1. The filename of the image


2. Colour Approach:
a. 1: Colour, neglecting transparency
b. 0: Greyscale
c. -1: Colour together with the alpha channel

11
@DylanSeychell
img = cv2.imread('duomo.jpg',1) img = cv2.imread('duomo.jpg',0)

Different output for different imread() arguments


12
@DylanSeychell
cv2.imshow() function
This function is used to display an image in a window.

cv2.imshow("Output Window", img)

This function accepts 2 parameters:

1. The name of the output window


2. The image to be displayed in the output window

NB 1: The window automatically fits the image size.


NB 2: Matplotlib can be used as an alternative
13
@DylanSeychell
cv2.waitKey() function
This is a keyboard binding function

cv2.waitKey()

A single argument value in milliseconds:

1. 0 or no argument: wait indefinitely for keyboard interrupt


2. Any other value: display the window for the duration of that value in ms

This function returns the ASCII value of the key pressed and if stored in a
variable, it can be used to perform subsequent logical operations.
14
@DylanSeychell
Using the webcam feed
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()

15
@DylanSeychell
cv2.VideoCapture() Object
The video capture object allows us to manipulate captured frames from a
camera.
cap = cv2.VideoCapture(0)

The argument is either the video filename or camera index, 0 for webcam.

Allows the handling of each frame.

After being used, the capture has to be released:


cap.release()

16
@DylanSeychell
Importing a video
cap = cv2.VideoCapture('vtest.avi')

while(cap.isOpened()): #returns true when there is another frame to process


ret, frame = cap.read()

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

cap.release()

17
@DylanSeychell
CodeLab Part 2: Image Processing

18
@DylanSeychell
Create a new module and initialise it
import cv2

img = cv2.imread('duomo.jpg',0)

##Our Image Processing code goes here

cv2.imshow("Output Window", img)


cv2.waitKey()

19
@DylanSeychell
Image Type
Try printing these values:

print (type(img))

This will return <type 'numpy.ndarray'>

Therefore, we’d deal with a numpy array

20
@DylanSeychell
Image Shape
Try printing these values:

img = cv2.imread('duomo.jpg',0)
print (type(img))
print (img)
[[22 22 22 ..., 23 23 24]
[22 22 22 ..., 23 23 23]
Greyscale
[22 22 22 ..., 23 23 23]
...,
[13 13 13 ..., 5 6 6]
[13 13 13 ..., 11 11 10]
[13 13 13 ..., 12 12 10]]
21
@DylanSeychell
Try the same thing with a coloured image

22
@DylanSeychell
Slicing Image Channels (Colours)
Load a coloured image and set unwanted channels to zero

img = cv2.imread("duomo.jpg", 1)

img[:,:,2] = 0 #red
img[:,:,1] = 0 #green
img[:,:,0] #blue

cv2.imshow("Output", img) #returns the blue channel

23
@DylanSeychell
img[:,:,2] = 0 #red img[:,:,2] #red img[:,:,2] = 0 #red
img[:,:,1] = 0 #green img[:,:,1] = 0 #green img[:,:,1] #green
img[:,:,0] #blue img[:,:,0] = 0 #blue img[:,:,0] = 0 #blue

Slicing by colour channel.


24
@DylanSeychell
Blurring images in OpenCV
The blur function using average values

blur = cv2.blur(img,(5,5))

This method accepts 2 arguments:

1. The source image


2. A tuple with the size of the box filter

25
@DylanSeychell
blur = cv2.blur(img,(10,10)) blur = cv2.blur(img,(5,5))

Simple blurring using OpenCV.


26
@DylanSeychell
Detecting Edges
Using Canny edge detection:

● Removes the noise using a Gaussian Filter


● Finds intensity gradient of the image
● Non-maximum suppression (remove unwanted pixels)
● Hysteresis Thresholding (difference between min and max values)

27
@DylanSeychell
Canny Edge Detection in OpenCV
edges = cv2.Canny(img,100,200)

This method accepts 3 arguments:

1. The source image


2. Min value
3. Max value

28
@DylanSeychell
edges = cv2.Canny(img,50,60) edges = cv2.Canny(img,150,300)

Different minVal and maxVal values


29
@DylanSeychell
Choosing a region of interest
An inbuilt function to select a region of interest:

fromCenter = False
r = cv2.selectROI(img, fromCenter)

Arguments:

1. The source image


2. Flag to choose the origin of the bounding box

30
@DylanSeychell
Using the resultant RoI
Save the resultant RoI into another image

r = cv2.selectROI(img, fromCenter)

imCropT = img[int(r[1]):int(r[1]+r[3]), int(r[0]):int(r[0]+r[2])]

Cropping the image using Numpy array slicing in the form:

crop= img[yoffset:-yoffset, xoffset:-xoffset]

31
@DylanSeychell
r = cv2.selectROI(img, fromCenter)
cv2.imshow("Cropped", imCropT)
imCropT = img[int(r[1]):int(r[1]+r[3]),
int(r[0]):int(r[0]+r[2])]

Selecting a RoI and displaying it


32
@DylanSeychell
Part 3: Analysis

This is a specialised field also known as Artificial


Vision. More resources related to this field will follow.

33
@DylanSeychell
Object Detection & Classification Image to Text

Merging Computer Vision and AI.


34
@DylanSeychell
Thank you!

35
@DylanSeychell

You might also like