opencv - a short introduction to opencv librariesmoltisanti/cv1213/01a_opencv.pdf · a short...

Post on 26-Mar-2018

237 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

OpenCVA short introduction to OpenCV libraries

Marco Moltisanti

Image Processing LabDipartimento di Matematica e Informatica

Universita degli Studi di Catania

moltisanti@dmi.unict.it

March 13, 2013

Intro Resources

What?

OpenCV (Open Source Computer Vision) is a library of programmingfunctions containing all the standard algorithms for Computer Vision;

Currently, functions are implemented in C/C++, Python and Java;

OpenCV libraries can run on Windows, Linux, Android and Macsystems;

Latest version is 2.4.4.

M. Moltisanti − OpenCV 2/27

Intro Resources

What?

OpenCV (Open Source Computer Vision) is a library of programmingfunctions containing all the standard algorithms for Computer Vision;

Currently, functions are implemented in C/C++, Python and Java;

OpenCV libraries can run on Windows, Linux, Android and Macsystems;

Latest version is 2.4.4.

M. Moltisanti − OpenCV 2/27

Intro Resources

What?

OpenCV (Open Source Computer Vision) is a library of programmingfunctions containing all the standard algorithms for Computer Vision;

Currently, functions are implemented in C/C++, Python and Java;

OpenCV libraries can run on Windows, Linux, Android and Macsystems;

Latest version is 2.4.4.

M. Moltisanti − OpenCV 2/27

Intro Resources

What?

OpenCV (Open Source Computer Vision) is a library of programmingfunctions containing all the standard algorithms for Computer Vision;

Currently, functions are implemented in C/C++, Python and Java;

OpenCV libraries can run on Windows, Linux, Android and Macsystems;

Latest version is 2.4.4.

M. Moltisanti − OpenCV 2/27

Intro Resources

Where?

Download;

Documentation;

Tutorials.

M. Moltisanti − OpenCV 3/27

Intro Resources

Where?

Download;

Documentation;

Tutorials.

M. Moltisanti − OpenCV 3/27

Intro Resources

Where?

Download;

Documentation;

Tutorials.

M. Moltisanti − OpenCV 3/27

Intro Resources

Other Resources

Book: Learning OpenCV: Computer Vision with the OpenCV Library ;

Wiki;

C/C++ Cheatsheet (PDF);

M. Moltisanti − OpenCV 4/27

Library structure

Main Packages

core Basic functionalities and data structures;

imgproc Image processing functions (blurring, histograms,registration, tracking, detection);

highgui High-level Graphical User Interface;

calib3d Camera calibration and 3D Reconstruction;

features2d Features detection and description;

objdetect Object detection;

ml Machine Learning and Pattern Recognition tools (e.g.k-means, SVM, knn)

M. Moltisanti − OpenCV 5/27

Library structure

Main Packages

core Basic functionalities and data structures;

imgproc Image processing functions (blurring, histograms,registration, tracking, detection);

highgui High-level Graphical User Interface;

calib3d Camera calibration and 3D Reconstruction;

features2d Features detection and description;

objdetect Object detection;

ml Machine Learning and Pattern Recognition tools (e.g.k-means, SVM, knn)

M. Moltisanti − OpenCV 5/27

Library structure

Main Packages

core Basic functionalities and data structures;

imgproc Image processing functions (blurring, histograms,registration, tracking, detection);

highgui High-level Graphical User Interface;

calib3d Camera calibration and 3D Reconstruction;

features2d Features detection and description;

objdetect Object detection;

ml Machine Learning and Pattern Recognition tools (e.g.k-means, SVM, knn)

M. Moltisanti − OpenCV 5/27

Library structure

Main Packages

core Basic functionalities and data structures;

imgproc Image processing functions (blurring, histograms,registration, tracking, detection);

highgui High-level Graphical User Interface;

calib3d Camera calibration and 3D Reconstruction;

features2d Features detection and description;

objdetect Object detection;

ml Machine Learning and Pattern Recognition tools (e.g.k-means, SVM, knn)

M. Moltisanti − OpenCV 5/27

Library structure

Main Packages

core Basic functionalities and data structures;

imgproc Image processing functions (blurring, histograms,registration, tracking, detection);

highgui High-level Graphical User Interface;

calib3d Camera calibration and 3D Reconstruction;

features2d Features detection and description;

objdetect Object detection;

ml Machine Learning and Pattern Recognition tools (e.g.k-means, SVM, knn)

M. Moltisanti − OpenCV 5/27

Library structure

Main Packages

core Basic functionalities and data structures;

imgproc Image processing functions (blurring, histograms,registration, tracking, detection);

highgui High-level Graphical User Interface;

calib3d Camera calibration and 3D Reconstruction;

features2d Features detection and description;

objdetect Object detection;

ml Machine Learning and Pattern Recognition tools (e.g.k-means, SVM, knn)

M. Moltisanti − OpenCV 5/27

Library structure

Main Packages

core Basic functionalities and data structures;

imgproc Image processing functions (blurring, histograms,registration, tracking, detection);

highgui High-level Graphical User Interface;

calib3d Camera calibration and 3D Reconstruction;

features2d Features detection and description;

objdetect Object detection;

ml Machine Learning and Pattern Recognition tools (e.g.k-means, SVM, knn)

M. Moltisanti − OpenCV 5/27

Library structure

Main Packages

core Basic functionalities and data structures;

imgproc Image processing functions (blurring, histograms,registration, tracking, detection);

highgui High-level Graphical User Interface;

calib3d Camera calibration and 3D Reconstruction;

features2d Features detection and description;

objdetect Object detection;

ml Machine Learning and Pattern Recognition tools (e.g.k-means, SVM, knn)

Data structures and functions belong to the namespace cv; therefore, toaccess this functionality from your code, use the cv:: specifier or usingnamespace cv; directive

M. Moltisanti − OpenCV 5/27

Library structure Include and libs

Directory structure

Let CVHOME be the folder where you have installed OpenCV.

CVHOME

bin

doc

include

opencv.....................old versions’ C/C++ header filesopencv2...................new versions’ C/C++ header files

lib

opencv {package name } {version }d.lib........Debug libsopencv {package name } {version }.lib.......Release libs

Figure : OpenCV directory tree

M. Moltisanti − OpenCV 6/27

Library structure Include and libs

Example

Example

If you have installed OpenCV 2.4.2, the core functions and datastructures are declared in include/opencv2/core/core.hpp and can befound in the library opencv core 242d.lib (Debug) andopencv core 242.lib (Release)

M. Moltisanti − OpenCV 7/27

Library structure Compiling and running

Microsoft Visual Studio 2008/2010 - Standard

The Good old method

(1) Create a new, blank, C++ Project;

(2) Open Project Properties;(3) Click on VC++ Directories;

(a) Add CVHOME/include directory to Additional Include Directories;

(4) Click on Linker ;(a) Click on General, then add CVHOME/lib directory to Additional

Library Directories;(b) Click on Input, then add the lib filenames you need to Additional

dependencies.

M. Moltisanti − OpenCV 8/27

Library structure Compiling and running

Microsoft Visual Studio 2008/2010 - Local Property Sheet

Local method

(1) Create a new, blank, C++ Project;

(2) Open the Property Manager ;

(3) Right click on Debug, then click on Add New Property Sheet;

(4) Apply the Good old method and save the property sheet;

(5) Do steps 2 and 3 for Release;

(6) Next time you want to create a new OpenCV-based project, justclick on Add Existing Property Sheet.

M. Moltisanti − OpenCV 9/27

Library structure Compiling and running

Microsoft Visual Studio 2008/2010 - Global Property Sheet

Global method

Visual Studio 2008(1) Go to Tools → Options → Projects and Solutions;(2) Apply the Good old method.

Visual Studio 2010(1) Apply the local method to the Global Property Sheet (it should be

named Microsoft.Cpp.Win32.user).

Remember that OpenCV libraries for Debug and Release differsonly in the final d!Be careful ;-)

M. Moltisanti − OpenCV 10/27

Library structure Basic classes

Geometric primitives - Points and Rectangles

Point Template class that represents a 2-column vector containingthe coordinates of a point in a plane;

Implemented classes:

Point, Point2i: integer coordinates;Point2d: double coordinates;Point2f: float coordinates.

Point3 Template class that represents a 3-column vector containingthe coordinates of a point in the space;

Point3, Point3i: integer coordinates;Point3d: double coordinates;Point3f: float coordinates.

Rect Template class that represents a rectangle, defined by theupper-left corner coordinates, width and height.

M. Moltisanti − OpenCV 11/27

Library structure Basic classes

Geometric primitives - Points and Rectangles

Point Template class that represents a 2-column vector containingthe coordinates of a point in a plane;

Implemented classes:

Point, Point2i: integer coordinates;Point2d: double coordinates;Point2f: float coordinates.

Point3 Template class that represents a 3-column vector containingthe coordinates of a point in the space;

Point3, Point3i: integer coordinates;Point3d: double coordinates;Point3f: float coordinates.

Rect Template class that represents a rectangle, defined by theupper-left corner coordinates, width and height.

M. Moltisanti − OpenCV 11/27

Library structure Basic classes

Geometric primitives - Points and Rectangles

Point Template class that represents a 2-column vector containingthe coordinates of a point in a plane;

Implemented classes:

Point, Point2i: integer coordinates;Point2d: double coordinates;Point2f: float coordinates.

Point3 Template class that represents a 3-column vector containingthe coordinates of a point in the space;

Point3, Point3i: integer coordinates;Point3d: double coordinates;Point3f: float coordinates.

Rect Template class that represents a rectangle, defined by theupper-left corner coordinates, width and height.

M. Moltisanti − OpenCV 11/27

Library structure Basic classes

Geometric primitives - Points and Rectangles

Point Template class that represents a 2-column vector containingthe coordinates of a point in a plane;

Implemented classes:

Point, Point2i: integer coordinates;Point2d: double coordinates;Point2f: float coordinates.

Point3 Template class that represents a 3-column vector containingthe coordinates of a point in the space;

Point3, Point3i: integer coordinates;Point3d: double coordinates;Point3f: float coordinates.

Rect Template class that represents a rectangle, defined by theupper-left corner coordinates, width and height.

M. Moltisanti − OpenCV 11/27

Library structure Basic classes

Geometric primitives - Example

1 . . .2 P o i n t p1 ( 1 0 , 10) ;3 P o i n t 2 i p2 ( 1 1 , 11) ;4 Point2d p3 ( 1 . 0 , 1 . 0 ) ;5 P o i n t 2 f p4 ( 2 . 0 f , 2 . 0 f ) ;6

7 P o i n t 3 i p5 ( 1 0 , 10 , 10) ;8 Point3d p6 ( 1 . 0 , 1 . 0 , 1 . 0 ) ;9 P o i n t 3 f p7 ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ;

10

11 Rect <i n t> r1 ( 1 , 1 , 100 , 100) ;12 Rect <i n t> r2 ( p1 , p2 ) ;13 Rect <double> r3 ( p3 , p3 ∗1 0 . 0 ) ;14 . . .

Listing 1: Ex01.cpp

M. Moltisanti − OpenCV 12/27

Library structure Basic classes

Class Mat

Mat is the fundamental class for doing everything in OpenCV. Mat canrepresent:

a matrix;

a filter;

an image;

a set of vectors (e.g. descriptors);

etc.

M. Moltisanti − OpenCV 13/27

Library structure Basic classes

Class Mat

Mat is the fundamental class for doing everything in OpenCV. Mat canrepresent:

a matrix;

a filter;

an image;

a set of vectors (e.g. descriptors);

etc.

M. Moltisanti − OpenCV 13/27

Library structure Basic classes

Class Mat

Mat is the fundamental class for doing everything in OpenCV. Mat canrepresent:

a matrix;

a filter;

an image;

a set of vectors (e.g. descriptors);

etc.

M. Moltisanti − OpenCV 13/27

Library structure Basic classes

Class Mat

Mat is the fundamental class for doing everything in OpenCV. Mat canrepresent:

a matrix;

a filter;

an image;

a set of vectors (e.g. descriptors);

etc.

M. Moltisanti − OpenCV 13/27

Library structure Basic classes

Class Mat

Mat is the fundamental class for doing everything in OpenCV. Mat canrepresent:

a matrix;

a filter;

an image;

a set of vectors (e.g. descriptors);

etc.

M. Moltisanti − OpenCV 13/27

Library structure Basic classes

Class Mat

Mat is the fundamental class for doing everything in OpenCV. Mat canrepresent:

a matrix;

a filter;

an image;

a set of vectors (e.g. descriptors);

etc.

A Mat object should always be released before exiting the program usingthe Mat::release() function!

M. Moltisanti − OpenCV 13/27

Library structure Basic classes

Mat as an image

1 v o i d load Image ( ) {2

3 Mat img = imread ( ” l e n a . bmp” ) ;4 imshow ( ”Window” , img ) ;5 waitKey ( 0 ) ;6 img . r e l e a s e ( ) ;7 }

Listing 2: Ex02-Img.cpp

M. Moltisanti − OpenCV 14/27

Library structure Basic classes

Mat as a matrix

1 . . .2#i n c l u d e <opencv2 / imgproc / imgproc . hpp>3 . . .4 v o i d r o t a t i o n M a t r i x ( ) {5 Mat r o t ;6 r o t = g e t R o t a t i o n M a t r i x 2 D ( P o i n t 2 f ( 0 . 0 f , 0 . 0 f ) , 3 0 . 0 ,

1 . 0 ) ;7

8 f o r ( i n t i =0; i < r o t . rows ; i ++) {9 f o r ( i n t j =0; j < r o t . c o l s ; j ++)

10 cout << r o t . at<double >( i , j ) << ”\ t ” ;11 cout << e n d l ;12 }13

14 }Listing 3: Ex02-Mat.cpp

M. Moltisanti − OpenCV 15/27

Library structure Basic classes

Mat as a filter

1 . . .2#i n c l u d e <opencv2 / imgproc / imgproc . hpp>3 . . .4 v o i d c r e a t e F i l t e r ( ) {5

6 Mat f l t ;7 f l t = g e t G a u s s i a n K e r n e l ( 5 , 2 . 0 ) ;8

9 f o r ( i n t i =0; i < f l t . rows ; i ++) {10 f o r ( i n t j =0; j < f l t . c o l s ; j ++)11 cout << f l t . at<double >( i , j ) << ”\ t ” ;12 cout << e n d l ;13 }14 }

Listing 4: Ex02-Flt.cpp

M. Moltisanti − OpenCV 16/27

Library structure Basic classes

Mat as a set

1 v o i d c r e a t e O b s e r v a t i o n s S e t ( ) {2 Mat data ( 1 0 , 5 , CV 32S ) ;3 f o r ( i n t i =0; i <10; i ++) {4 f o r ( i n t j =0; j< 5 ; j ++)5 data . at<i n t >( i , j ) = rand ( ) ∗2 5 6 ;6

7 }8

9 f o r ( i n t i =0; i < data . rows ; i ++) {10 f o r ( i n t j =0; j < data . c o l s ; j ++)11 cout << data . at<i n t >( i , j ) << ”\ t ” ;12 cout << e n d l ;13 }14 }

Listing 5: Ex02-Set.cpp

M. Moltisanti − OpenCV 17/27

Library structure Basic classes

Notes on previous slides

As you probably noticed, we used two functions:

(1) getRotationMatrix2D;

(2) getGaussianKernel.

Both belong to imgproc subset, so we included the correspondent headerfile (see source code for details).

M. Moltisanti − OpenCV 18/27

Graphic User Interface

Loading, Showing and Writing an image

All graphical user interface (GUI) utilities are defined in highgui

library;

Include directive: opencv2\highgui\highgui.hpp;

imread(filename): reads the image from the filename passed as aparameter. Returns a Mat;

imshow(windowname, image): show the image in a new windowtitled windowname;

imwrite(filename, image, params): write the image in a new filenamed filename using the format specific params. The format isderived from the extension given in the filename.

M. Moltisanti − OpenCV 19/27

Graphic User Interface

Loading, Showing and Writing an image

All graphical user interface (GUI) utilities are defined in highgui

library;

Include directive: opencv2\highgui\highgui.hpp;

imread(filename): reads the image from the filename passed as aparameter. Returns a Mat;

imshow(windowname, image): show the image in a new windowtitled windowname;

imwrite(filename, image, params): write the image in a new filenamed filename using the format specific params. The format isderived from the extension given in the filename.

M. Moltisanti − OpenCV 19/27

Graphic User Interface

Loading, Showing and Writing an image

All graphical user interface (GUI) utilities are defined in highgui

library;

Include directive: opencv2\highgui\highgui.hpp;

imread(filename): reads the image from the filename passed as aparameter. Returns a Mat;

imshow(windowname, image): show the image in a new windowtitled windowname;

imwrite(filename, image, params): write the image in a new filenamed filename using the format specific params. The format isderived from the extension given in the filename.

M. Moltisanti − OpenCV 19/27

Graphic User Interface

Loading, Showing and Writing an image

All graphical user interface (GUI) utilities are defined in highgui

library;

Include directive: opencv2\highgui\highgui.hpp;

imread(filename): reads the image from the filename passed as aparameter. Returns a Mat;

imshow(windowname, image): show the image in a new windowtitled windowname;

imwrite(filename, image, params): write the image in a new filenamed filename using the format specific params. The format isderived from the extension given in the filename.

M. Moltisanti − OpenCV 19/27

Graphic User Interface

Loading, Showing and Writing an image

All graphical user interface (GUI) utilities are defined in highgui

library;

Include directive: opencv2\highgui\highgui.hpp;

imread(filename): reads the image from the filename passed as aparameter. Returns a Mat;

imshow(windowname, image): show the image in a new windowtitled windowname;

imwrite(filename, image, params): write the image in a new filenamed filename using the format specific params. The format isderived from the extension given in the filename.

M. Moltisanti − OpenCV 19/27

Graphic User Interface

Loading, Showing and Writing an image

1 . . .2 // Read t he image3 cv : : Mat l e n a = cv : : imread ( ” l e n a . bmp” ) ;4

5 //Show t he image6 cv : : imshow ( ” Lena ” , l e n a ) ;7 cv : : waitKey ( 0 ) ;8

9 // Set params10 s t d : : v e c t o r<i n t > jpg param ;11 jpg param . push back ( CV IMWRITE JPEG QUALITY ) ;12 jpg param . push back ( 5 0 ) ;13

14 // Wri te t he image15 cv : : i m w r i t e ( ” l e n a . j p g ” , l en a , jpg param ) ;16 . . .

Listing 6: Ex03.cpp

M. Moltisanti − OpenCV 19/27

Image Processing

Apply a built-in filter

Include directive: opencv2\imgproc\imgproc.hpp;

Load the image;

Create the output image;

Create and apply the filter;

Show the image;

Save the image.

M. Moltisanti − OpenCV 20/27

Image Processing

Apply a built-in filter

Include directive: opencv2\imgproc\imgproc.hpp;

Load the image;

Create the output image;

Create and apply the filter;

Show the image;

Save the image.

M. Moltisanti − OpenCV 20/27

Image Processing

Apply a built-in filter

Include directive: opencv2\imgproc\imgproc.hpp;

Load the image;

Create the output image;

Create and apply the filter;

Show the image;

Save the image.

M. Moltisanti − OpenCV 20/27

Image Processing

Apply a built-in filter

Include directive: opencv2\imgproc\imgproc.hpp;

Load the image;

Create the output image;

Create and apply the filter;

Show the image;

Save the image.

M. Moltisanti − OpenCV 20/27

Image Processing

Apply a built-in filter

Include directive: opencv2\imgproc\imgproc.hpp;

Load the image;

Create the output image;

Create and apply the filter;

Show the image;

Save the image.

M. Moltisanti − OpenCV 20/27

Image Processing

Apply a built-in filter

Include directive: opencv2\imgproc\imgproc.hpp;

Load the image;

Create the output image;

Create and apply the filter;

Show the image;

Save the image.

M. Moltisanti − OpenCV 20/27

Image Processing

Apply a built-in filter

1 . . .2 // Read t he image3 Mat l e n a = imread ( ” l e n a . bmp” ) ;4

5 //Show t he o r i g i n a l image6 imshow ( ” Lena o r i g i n a l ” , l e n a ) ;7

8 // C r e a t e th e output image9 Mat l e n a c a n n y = l e n a . c l o n e ( ) ;

10

11 . . .12

13 // C r e a t e and a p p l y th e f i l t e r14 Canny ( l e na , l e n a c a n n y , m[ 0 ] ∗ 0 . 6 6 , m[ 0 ] ∗ 1 . 3 3 ) ;15 . . .

Listing 7: Ex04.cpp

M. Moltisanti − OpenCV 20/27

Image Processing Video Handling

Video from device

Video handling is included in highgui package;

Include directive: opencv2\highgui\highgui.hpp;

Declare a VideoCapture(id) object; id is the camera identificationnumber;

Enter a loop;

In each iteration:

Grab a frame using the >> operator and store it in a Mat object;Check if the frame is empty;;Show the frame;

M. Moltisanti − OpenCV 21/27

Image Processing Video Handling

Video from device

Video handling is included in highgui package;

Include directive: opencv2\highgui\highgui.hpp;

Declare a VideoCapture(id) object; id is the camera identificationnumber;

Enter a loop;

In each iteration:

Grab a frame using the >> operator and store it in a Mat object;Check if the frame is empty;;Show the frame;

M. Moltisanti − OpenCV 21/27

Image Processing Video Handling

Video from device

Video handling is included in highgui package;

Include directive: opencv2\highgui\highgui.hpp;

Declare a VideoCapture(id) object; id is the camera identificationnumber;

Enter a loop;

In each iteration:

Grab a frame using the >> operator and store it in a Mat object;Check if the frame is empty;;Show the frame;

M. Moltisanti − OpenCV 21/27

Image Processing Video Handling

Video from device

Video handling is included in highgui package;

Include directive: opencv2\highgui\highgui.hpp;

Declare a VideoCapture(id) object; id is the camera identificationnumber;

Enter a loop;

In each iteration:

Grab a frame using the >> operator and store it in a Mat object;Check if the frame is empty;;Show the frame;

M. Moltisanti − OpenCV 21/27

Image Processing Video Handling

Video from device

Video handling is included in highgui package;

Include directive: opencv2\highgui\highgui.hpp;

Declare a VideoCapture(id) object; id is the camera identificationnumber;

Enter a loop;

In each iteration:

Grab a frame using the >> operator and store it in a Mat object;Check if the frame is empty;;Show the frame;

M. Moltisanti − OpenCV 21/27

Image Processing Video Handling

Video from device

Video handling is included in highgui package;

Include directive: opencv2\highgui\highgui.hpp;

Declare a VideoCapture(id) object; id is the camera identificationnumber;

Enter a loop;

In each iteration:

Grab a frame using the >> operator and store it in a Mat object;Check if the frame is empty;;Show the frame;

M. Moltisanti − OpenCV 21/27

Image Processing Video Handling

Video from device

Video handling is included in highgui package;

Include directive: opencv2\highgui\highgui.hpp;

Declare a VideoCapture(id) object; id is the camera identificationnumber;

Enter a loop;

In each iteration:

Grab a frame using the >> operator and store it in a Mat object;Check if the frame is empty;;Show the frame;

M. Moltisanti − OpenCV 21/27

Image Processing Video Handling

Video from device

1 VideoCapture vc ( 0 ) ;2 c h a r r e s = ’ 0 ’ ;3 i n t f p s = vc . g e t ( CV CAP PROP FPS ) ;4 Mat frame ;5 w h i l e ( 1 ) {6 vc >> f rame ;7 i f ( f rame . empty ( ) )8 b r e a k ;9 imshow ( ” Video ” , f rame ) ;

10 r e s = ( c h a r ) ( waitKey ( 0 ) ) ;11

12 i f ( r e s == ’ q ’ )13 b r e a k ;14 }15 vc . r e l e a s e ( ) ;

Listing 8: Ex05-In.cpp

M. Moltisanti − OpenCV 21/27

Image Processing Video Handling

Video from file

The difference between using a video from file and a video from a device isonly in the constructor. Instead of VideoCapture(id) function, we willuse the overloaded version VideoCapure(filename), where filename isthe path to a video file.

Example

VideoCapture vc(”video.mp4”)

M. Moltisanti − OpenCV 22/27

Image Processing Video Handling

Save a video

Declare a VideoWriter objectand set the properties for the newvideo using the constructor;

Put the frames in the VideoWriter object using the << operator;

Release the VideoWriter object.

M. Moltisanti − OpenCV 23/27

Image Processing Video Handling

Save a video

Declare a VideoWriter objectand set the properties for the newvideo using the constructor;

Put the frames in the VideoWriter object using the << operator;

Release the VideoWriter object.

M. Moltisanti − OpenCV 23/27

Image Processing Video Handling

Save a video

Declare a VideoWriter objectand set the properties for the newvideo using the constructor;

Put the frames in the VideoWriter object using the << operator;

Release the VideoWriter object.

M. Moltisanti − OpenCV 23/27

Image Processing Video Handling

Save a video

1 S i z e s ( vc . g e t (CV CAP PROP FRAME WIDTH) , vc . g e t (CV CAP PROP FRAME HEIGHT) ) ;

2 V i d e o W r i t e r vw ( ” v ideoOut . a v i ” , vc . g e t (CV CAP PROP FOURCC), vc . g e t ( CV CAP PROP FPS ) , s , t r u e ) ;

3

4 w h i l e ( 1 ) {5

6 . . .7 f l i p ( frame , newFrame , 1) ;8 vw << newFrame ;9 imshow ( ” I t ’ s someth ing ! ” , newFrame ) ;

10 r e s = ( c h a r ) waitKey (1000/ f p s ) ;11 . . .12 }

Listing 9: Ex05-Out.cpp

M. Moltisanti − OpenCV 23/27

Machine Learning

Available methods

Statistical Models;

Normal Bayes Classifier;

K-NN;

SVM;

Decision Trees;

Boosting;

Gradient Boosted Trees;

Random Trees;

EM algorithm;

Neural Networks.

M. Moltisanti − OpenCV 24/27

Machine Learning

Available methods

Statistical Models;

Normal Bayes Classifier;

K-NN;

SVM;

Decision Trees;

Boosting;

Gradient Boosted Trees;

Random Trees;

EM algorithm;

Neural Networks.

M. Moltisanti − OpenCV 24/27

Machine Learning

Available methods

Statistical Models;

Normal Bayes Classifier;

K-NN;

SVM;

Decision Trees;

Boosting;

Gradient Boosted Trees;

Random Trees;

EM algorithm;

Neural Networks.

M. Moltisanti − OpenCV 24/27

Machine Learning

Available methods

Statistical Models;

Normal Bayes Classifier;

K-NN;

SVM;

Decision Trees;

Boosting;

Gradient Boosted Trees;

Random Trees;

EM algorithm;

Neural Networks.

M. Moltisanti − OpenCV 24/27

Machine Learning

Available methods

Statistical Models;

Normal Bayes Classifier;

K-NN;

SVM;

Decision Trees;

Boosting;

Gradient Boosted Trees;

Random Trees;

EM algorithm;

Neural Networks.

M. Moltisanti − OpenCV 24/27

Machine Learning

Available methods

Statistical Models;

Normal Bayes Classifier;

K-NN;

SVM;

Decision Trees;

Boosting;

Gradient Boosted Trees;

Random Trees;

EM algorithm;

Neural Networks.

M. Moltisanti − OpenCV 24/27

Machine Learning

Available methods

Statistical Models;

Normal Bayes Classifier;

K-NN;

SVM;

Decision Trees;

Boosting;

Gradient Boosted Trees;

Random Trees;

EM algorithm;

Neural Networks.

M. Moltisanti − OpenCV 24/27

Machine Learning

Available methods

Statistical Models;

Normal Bayes Classifier;

K-NN;

SVM;

Decision Trees;

Boosting;

Gradient Boosted Trees;

Random Trees;

EM algorithm;

Neural Networks.

M. Moltisanti − OpenCV 24/27

Machine Learning

Available methods

Statistical Models;

Normal Bayes Classifier;

K-NN;

SVM;

Decision Trees;

Boosting;

Gradient Boosted Trees;

Random Trees;

EM algorithm;

Neural Networks.

M. Moltisanti − OpenCV 24/27

Machine Learning

Available methods

Statistical Models;

Normal Bayes Classifier;

K-NN;

SVM;

Decision Trees;

Boosting;

Gradient Boosted Trees;

Random Trees;

EM algorithm;

Neural Networks.

M. Moltisanti − OpenCV 24/27

Machine Learning

Available methods

Include Directive

Include path: <opencv2\ml\ml.hpp>Documentation is fundamental using ml functions!

M. Moltisanti − OpenCV 24/27

In conclusion...

Tips & Tricks

Tip #1

Documentation is your biggest friend while developing!

Tip #2

Community is your second biggest friend!Google to find out how your colleagues all around the world solved theirproblems!

Tip #3

Don’t try to copy!

M. Moltisanti − OpenCV 25/27

In conclusion...

If you have doubts don’t hesitate to contact me at:

moltisanti@dmi.unict.it;

IPLab (room 146 - ground floor);

Room 31 - first floor in the classrooms area.

Slides available at

Course page

Personal page

Code available here - Personal page

M. Moltisanti − OpenCV 26/27

In conclusion...

Question time!

M. Moltisanti − OpenCV 27/27

top related