1. Computer Vision
OpenCV
Luigi De Russis
Politecnico di Torino
Dipartimento di Automatica e Informatica (DAUIN)
Torino - Italy
luigi.derussis@polito.it
This work is licensed under the Creative Commons (CC BY-SA)
License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/3.0/
2. What is OpenCV?
Open source Computer Vision library
http://opencv.org/
Originally developed by Intel
Has more than 2500 optimized algorithms
C/C++/Python API
it is written natively in C++
Cross-platform
includes a
also available for Android and iOS
Java API
Released under a BSD license (it’s free)
Current release version: 2.4.3RC (October 2012)
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 2
3. Various applications…
Human-Computer Interaction (HCI)
Object Identification
Object Recognition
Face Recognition
Gesture Recognition
Motion Tracking
Image Processing
Mobile Robotics
… and so on.
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 3
4. Why OpenCV? (I)
Best competitor here: Matlab
Pros
Specific
OpenCV was made for image processing
Matlab is quite generic
Speed
around 30 frames processed per seconds in real time image
processing (OpenCV)
around 4-5 frames processed per seconds in real time image
processing (Matlab)
Efficient
Matlab needs more system resources than OpenCV
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 4
5. Why OpenCV? (II)
Cons
Easy of use
Integrated Development Environment
you can use Eclipse, Netbeans, Visual Studio, Qt, XCode, … a
simple text editor for OpenCV
Memory management
Two more “pros”…
Price (!)
OpenCV Wrappers
SimpleCV, JavaCV, Emgu CV, JavacvPro, …
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 5
6. Modules (I)
OpenCV has a modular structure, i.e., the package
includes several shared or static libraries:
core
basic structures and algorithms
imgproc
Image Processing algorithms (such as image filtering,
geometrical image transformations, histograms, etc.)
video
video analysis (such as motion estimation and object tracking)
highgui
built-in simple UI
in addition, we will use Qt
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 6
7. Modules (II)
calib3d
camera calibration and 3D reconstruction
features2d
2D features framework (feature detectors, descriptors, and
descriptor matchers)
objdetect
detection of objects and other items (e.g., faces, eyes, mugs,
people, …)
ml
machine learning classes used for statistical classification,
regression and clustering of data
gpu
GPU-accelerated algorithms
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 7
8. Data structures (I)
We speak about C++ API
All the OpenCV classes and functions are placed
into the cv namespace
Mat
the primary image structure in OpenCV 2.x
overcomes the “old” IplImage/CvMat problems
(OpenCV 1.x/C API)
automatic memory management (more or less)
two data parts:
matrix header (contains information about the matrix)
a pointer to the matrix containing the pixel values
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 8
9. Data structures (II)
Point_ (Point2f, Point, Point2d)
2D point
defined by x, y coordinates
Point first(2, 3);
Size_ (Size, Size2f)
2D size structure
specify the size (width and height) of an image or
rectangle
Rect
2D rectangle object
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 9
10. Image I/O
Image I/O
imread
legge un’immagine da file e lo salva in un oggetto di tipo Mat
Mat imread(const string& filename, int flags=1)
imwrite
salva un’immagine su file
bool imwrite(const string& filename, InputArray img,
const vector<int>& params=vector<int>())
imshow
mostra un’immagine a schermo (in una finestra creata
precedentemente)
void imshow(const string& winname, InputArray mat)
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 10
11. Drawing operations
Base drawing operations
circle
draws a simple or filled circle with a given center and radius on a
given image
line
draws a line between two point in the given image
ellipse
draws an ellipse outline, a filled ellipse, an elliptic arc, a filled
ellipse sector, …
rectangle
draws a rectangle outline or a filled rectangle
note that negative thickness will fill the rectangle
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 11
12. Color spaces
Converting color spaces
cvtColor
converts an input image from one color space to another
examples:
cvtColor(src, dest, CV_RGB2GRAY);
cvtColor(src, dest, CV_HSV2BGR);
cvtColor(src, dest, CV_RGB2BGR);
important, since images in OpenCV uses BGR instead of
RGB
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 12
13. How we can use OpenCV?
LABINF:
already installed under Windows
version 2.3.1
Qt Creator (4.7.4) is the IDE to be used
At home:
feel free to install OpenCV version 2.4.3
it should be more “stable”
you can use whatever IDE you like
but we give full support only for Qt Creator
Installation:
see the next set of slides for a step-by-step guide
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 13
14. What if I got problems?
Small problems
drop me a line Problems with Qt and a gray scale image
luigi.derussis@polito.it
Awesome student to me
Normal problems Hi,
[…] I’m using “cvtColor(image, gray, CV_BGR2GRAY);” and Indexed8 to convert an image in
gray scale but the image is not shown in Qt…
come to office hours Can you help me?
Regards,
…
every Tuesday, 9:00 - 11:00
LAB6, second floor of DAUIN
please send an e-mail beforehand
Enormous problems
come to the dedicated lessons
Tuesday 30th October, 9:30-12:30, DAUIN
Thursday 8th November, 15:00-18:00, DAUIN
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 14
15. What if I got problems?
OpenCV installation
Small problems Not-So-Awesome student to me
drop me a line Hi,
[…] I followed the guide for installing OpenCV on my Mac but I have an error after step 3. Can
we meet on next Tuesday to solve the problem?
luigi.derussis@polito.it Thanks!
Regards,
Normal problems …
come to office hours
every Tuesday, 9:00 - 11:00
LAB6, second floor of DAUIN
please send an e-mail beforehand
Enormous problems
come to the dedicated lessons
Tuesday 30th October, 9:30-12:30, DAUIN
Thursday 8th November, 15:00-18:00, DAUIN
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 15
16. What if I got problems?
Small problems
drop me a line
luigi.derussis@polito.it
Normal problems Help with OpenCV
come to office hours Good student to me
Hi,
every Tuesday, 9:00 - 11:00 […] I see the solution of Exercise 2.1 but I don’t understand the following expressions:
- main();
- int* number;
LAB6, second floor of DAUIN - &timer.
Can you explain to me what they are?
please send an e-mail beforehand Regards,
…
Enormous problems
come to the dedicated lessons
Tuesday 30th October, 9:30-12:30, DAUIN
Thursday 8th November, 15:00-18:00, DAUIN
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 16
17. An mail not to be sent!!!
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 17
18. Resources
OpenCV Wiki
http://code.opencv.org/projects/opencv/wiki
OpenCV 2.x Official Documentation
http://docs.opencv.org/
User Q&A forum
http://answers.opencv.org/questions/
OpenCV 2.x Tutorials
http://docs.opencv.org/opencv_tutorials.pdf
Books:
Robert Laganière, OpenCV 2 Computer Vision Application Programming
Cookbook, Packt Publishing, ISBN 978-1849513241
Gary Bradsky, Adrian Kaehler, Learning OpenCV: Computer Vision in C++ with
the OpenCV Library, O'Reilly Media, ISBN 978-1449314651 (to be published)
10/26/2012 Luigi De Russis - Computer Vision - OpenCV 18
19. License
This work is licensed under the Creative Commons
“Attribution-NonCommercial-ShareAlike Unported (CC BY-
NC-SA 3,0)” License.
You are free:
to Share - to copy, distribute and transmit the work
to Remix - to adapt the work
Under the following conditions:
Attribution - You must attribute the work in the manner
specified by the author or licensor (but not in any way that
suggests that they endorse you or your use of the work).
Noncommercial - You may not use this work for commercial
purposes.
Share Alike - If you alter, transform, or build upon this work,
you may distribute the resulting work only under the same or
similar license to this one.
26/10/2012 Luigi De Russis - Computer Vision - OpenCV 19