Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction to OpenCV

7,691 views

Published on

A brief introduction to OpenCV 2.x for the Computer Vision Course at Politecnico di Torino (academic year 2012/2013).

Published in: Education
  • Be the first to comment

Introduction to OpenCV

  1. 1. Computer Vision OpenCV Luigi De Russis Politecnico di TorinoDipartimento di Automatica e Informatica (DAUIN) Torino - Italy luigi.derussis@polito.itThis 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. 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. 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. 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 OpenCV10/26/2012 Luigi De Russis - Computer Vision - OpenCV 4
  5. 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. 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 Qt10/26/2012 Luigi De Russis - Computer Vision - OpenCV 6
  7. 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 algorithms10/26/2012 Luigi De Russis - Computer Vision - OpenCV 7
  8. 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 values10/26/2012 Luigi De Russis - Computer Vision - OpenCV 8
  9. 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 object10/26/2012 Luigi De Russis - Computer Vision - OpenCV 9
  10. 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. 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 rectangle10/26/2012 Luigi De Russis - Computer Vision - OpenCV 11
  12. 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 RGB10/26/2012 Luigi De Russis - Computer Vision - OpenCV 12
  13. 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 guide10/26/2012 Luigi De Russis - Computer Vision - OpenCV 13
  14. 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, DAUIN10/26/2012 Luigi De Russis - Computer Vision - OpenCV 14
  15. 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, DAUIN10/26/2012 Luigi De Russis - Computer Vision - OpenCV 15
  16. 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, DAUIN10/26/2012 Luigi De Russis - Computer Vision - OpenCV 16
  17. 17. An mail not to be sent!!!10/26/2012 Luigi De Russis - Computer Vision - OpenCV 17
  18. 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, OReilly Media, ISBN 978-1449314651 (to be published)10/26/2012 Luigi De Russis - Computer Vision - OpenCV 18
  19. 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

×