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.
OpenCV C++ Workshop
Lentin Joseph
Founder of Qbotics Labs
www.qboticslabs.com
About OpenCV
●
Open Source Computer Vision library
●
Real-time Computer vision library
●
Started by Intel Russia, launched...
About OpenCV
●
2012 : opencv -> opencv.org
●
Current version : OpenCV 3.0 beta
●
Opensource BSD license
●
Cross platform
●...
About OpenCV
●
Written in C++ and C
●
Full Interfaces for Python, Java, Matlab/
Octave
●
Wrappers in C#, Perl, Ruby
●
OS S...
Applications of OpenCV
●
Gesture recognition
●
Human-computer interaction(HCI)
●
Mobile robotics
●
Segmentation and recogn...
Installing OpenCV
●
Installing from source code
●
Installing from Ubuntu packages
http://www.qboticslabs.com
Installing OpenCV from Ubuntu
packages
$ sudo apt-get update
$ sudo apt-get install
libopencv-dev
http://www.qboticslabs.c...
Installing OpenCV from source
code
●
Install prerequisites packages
● [compiler] sudo apt-get install build-essential
● [r...
Installing OpenCV from source
code
● cd ~/opencv
● git clone https://github.com/Itseez/opencv.git
● mkdir release
● cd rel...
Installing OpenCV from source
code
● cd ~/opencv
● git clone https://github.com/Itseez/opencv.git
● mkdir release
● sudo a...
Installing OpenCV from source
code
http://www.qboticslabs.com
Check OpenCV is installed !!!
● $ pkg-config opencv –cflags
$ pkg-config opencv --libs
Setting OpenCV in Eclipse
●
Install OpenJDK from Ubuntu Software
Check Ubuntu Version !!!
●
System settings -> Details -> Overview
Download Eclipse
●
http://www.eclipse.org/downloads/
Extract and Install Eclipse
● cd /opt/ && sudo tar -zxvf
~/Downloads/eclipse-*.tar.gz
●
Without using command
● $ gksudo n...
Adding Shortcut for Eclipse
● $ gksudo gedit /usr/share/applications/eclipse.desktop
●
Paste the following to this file
[D...
Access eclipse via Unity Dash
Setting OpenCV in Eclipse
●
Setting Include path
– Properties -> C/C++ Build->Settings->Cross G++
Compiler->Includes
– $ p...
Setting OpenCV in Eclipse
●
Setting Lib path and libraries
– Properties -> C/C++ Build->Settings->Cross G++
Compiler->Libr...
Running test code !!!
●
Reading an Image
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include ...
Running test code !!!
●
Setting command line argument
– Project -> Run as-> Run Configurations
Output !!!
Compile code without Eclipse
●
Save code as .cpp using an text editor
●
Compile using following command
● $ g++ <input_fil...
OpenCV Modules
●
OpenCV has modular structure
●
OpenCV contain several shared/static libraries
● Core : Contain basic imag...
OpenCV Modules
● Calib3d : mainly for camera calibration
● Features2d : contain feature detectors,
descriptors and descrip...
About OpenCV API's
● All OpenCV classes are placed in cv
namespace
Let's start coding
Reading an Image
OpenCV Header Files Used
● #include <opencv2/highgui/highgui.hpp>
OpenCV API's used
● imread(file_name,fl...
Reading an Image
Output
Reading a Video
OpenCV Header Files Used
● #include <opencv2/highgui/highgui.hpp>
OpenCV API's used
● VideoCapture cap(arg...
Reading from Camera
OpenCV Header Files Used
● #include <opencv2/highgui/highgui.hpp>
OpenCV API's used
● VideoCapture cap...
Reading Pixel from Image and
Mouse Interaction
OpenCV Header Files Used
● #include <opencv2/highgui/highgui.hpp>
OpenCV AP...
Working with Mat type
OpenCV Header Files Used
● #include <opencv2/highgui/highgui.hpp>
OpenCV API's used
● Mat red(480,64...
Adjusting brightness and contrast
OpenCV Header Files Used
● #include <opencv2/highgui/highgui.hpp>
OpenCV API's used
● ne...
Image Smoothing demo
OpenCV Header Files Used
● #include "opencv2/imgproc/imgproc.hpp"
● #include "opencv2/highgui/highgui...
Segmentation: Thresholding
OpenCV Header Files Used
● #include "opencv2/imgproc/imgproc.hpp"
● #include "opencv2/highgui/h...
Edge Detection
OpenCV Header Files Used
● #include "opencv2/imgproc/imgproc.hpp"
● #include "opencv2/highgui/highgui.hpp"
...
Laplace & Sobel
OpenCV Header Files Used
● #include "opencv2/imgproc/imgproc.hpp"
● #include "opencv2/highgui/highgui.hpp"...
Hough Transform(Circle & Line)
OpenCV Header Files Used
● #include "opencv2/imgproc/imgproc.hpp"
● #include "opencv2/highg...
Contour Detection
OpenCV Header Files Used
● #include "opencv2/imgproc/imgproc.hpp"
● #include "opencv2/highgui/highgui.hp...
Histogram
OpenCV Header Files Used
● #include "opencv2/imgproc/imgproc.hpp"
● #include "opencv2/highgui/highgui.hpp"
OpenC...
Harris_Corner_Detection
OpenCV Header Files Used
● #include "opencv2/imgproc/imgproc.hpp"
● #include "opencv2/highgui/high...
Motion Detection, LK,FB,BS
OpenCV Header Files Used
● #include "opencv2/video/tracking.hpp"
● #include "opencv2/imgproc/im...
Face Detection
OpenCV Header Files Used
● #include "opencv2/objdetect/objdetect.hpp"
● #include "opencv2/highgui/highgui.h...
Conclusion
●
Discussed basics of Computer Vision
●
Discussed about OpenCV
●
Discussed OpenCV programming using C++
●
Discu...
Questions !!!
Thanks !!!
Lentin Joseph
Founder of QboticsLabs
http://www.qboticslabs.com
http://www.lentinjoseph.com
Upcoming SlideShare
Loading in …5
×

13

Share

Download to read offline

OpenCV Workshop

Download to read offline

OpenCV Workshop slide by @Qbotics Labs
http://www.qboticslabs.com/
http://blog.qboticslabs.com/

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

OpenCV Workshop

  1. 1. OpenCV C++ Workshop Lentin Joseph Founder of Qbotics Labs www.qboticslabs.com
  2. 2. About OpenCV ● Open Source Computer Vision library ● Real-time Computer vision library ● Started by Intel Russia, launched in 1999 ● 2000 : First alpha release ● 2006: First stable release ● 2009: Second major release http://www.qboticslabs.com
  3. 3. About OpenCV ● 2012 : opencv -> opencv.org ● Current version : OpenCV 3.0 beta ● Opensource BSD license ● Cross platform ● Now supporting by Willow Garage and Itseez http://www.qboticslabs.com
  4. 4. About OpenCV ● Written in C++ and C ● Full Interfaces for Python, Java, Matlab/ Octave ● Wrappers in C#, Perl, Ruby ● OS Support : Windows, Linux, Android, Maemo, FreeBSD, IOS, OS X, BlackBerry 10 http://www.qboticslabs.com
  5. 5. Applications of OpenCV ● Gesture recognition ● Human-computer interaction(HCI) ● Mobile robotics ● Segmentation and recognition ● Motion tracking ● Augmented reality ● Machine learning http://www.qboticslabs.com
  6. 6. Installing OpenCV ● Installing from source code ● Installing from Ubuntu packages http://www.qboticslabs.com
  7. 7. Installing OpenCV from Ubuntu packages $ sudo apt-get update $ sudo apt-get install libopencv-dev http://www.qboticslabs.com
  8. 8. Installing OpenCV from source code ● Install prerequisites packages ● [compiler] sudo apt-get install build-essential ● [required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev ● [optional] sudo apt-get install python-dev python- numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev http://www.qboticslabs.com
  9. 9. Installing OpenCV from source code ● cd ~/opencv ● git clone https://github.com/Itseez/opencv.git ● mkdir release ● cd release ● cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON .. ● make http://www.qboticslabs.com
  10. 10. Installing OpenCV from source code ● cd ~/opencv ● git clone https://github.com/Itseez/opencv.git ● mkdir release ● sudo apt-get install cmake-qt-gui ● http://www.qboticslabs.com
  11. 11. Installing OpenCV from source code http://www.qboticslabs.com
  12. 12. Check OpenCV is installed !!! ● $ pkg-config opencv –cflags $ pkg-config opencv --libs
  13. 13. Setting OpenCV in Eclipse ● Install OpenJDK from Ubuntu Software
  14. 14. Check Ubuntu Version !!! ● System settings -> Details -> Overview
  15. 15. Download Eclipse ● http://www.eclipse.org/downloads/
  16. 16. Extract and Install Eclipse ● cd /opt/ && sudo tar -zxvf ~/Downloads/eclipse-*.tar.gz ● Without using command ● $ gksudo nautilus
  17. 17. Adding Shortcut for Eclipse ● $ gksudo gedit /usr/share/applications/eclipse.desktop ● Paste the following to this file [Desktop Entry] Name=Eclipse 4 Type=Application Exec=/opt/eclipse/eclipse Terminal=false Icon=/opt/eclipse/icon.xpm Comment=Integrated Development Environment NoDisplay=false Categories=Development;IDE; Name[en]=Eclipse
  18. 18. Access eclipse via Unity Dash
  19. 19. Setting OpenCV in Eclipse ● Setting Include path – Properties -> C/C++ Build->Settings->Cross G++ Compiler->Includes – $ pkg-config opencv --cflags
  20. 20. Setting OpenCV in Eclipse ● Setting Lib path and libraries – Properties -> C/C++ Build->Settings->Cross G++ Compiler->Libraries – $ pkg-config opencv --libs
  21. 21. Running test code !!! ● Reading an Image #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace cv; using namespace std; int main( int argc, char** argv ) { if( argc != 2) { cout <<" Usage: display_image ImageToLoadAndDisplay" << endl; return -1; } Mat image; image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file if(! image.data ) // Check for invalid input { cout << "Could not open or find the image" << std::endl ; return -1; } namedWindow( "Display window", WINDOW_AUTOSIZE );// Create a window for display. imshow( "Display window", image ); // Show our image inside it. waitKey(0); // Wait for a keystroke in the window return 0; }
  22. 22. Running test code !!! ● Setting command line argument – Project -> Run as-> Run Configurations
  23. 23. Output !!!
  24. 24. Compile code without Eclipse ● Save code as .cpp using an text editor ● Compile using following command ● $ g++ <input_file.cpp> `pkg-config opencv –cflags –libs` -o <output_name> ● $ ./output_name
  25. 25. OpenCV Modules ● OpenCV has modular structure ● OpenCV contain several shared/static libraries ● Core : Contain basic image data structure such as Mat ● Imgproc : image processing module contain linear and non linear filter, color space conversion, histogram etc ● Video : Motion estimation, background substraction, object tracking algorithms etc
  26. 26. OpenCV Modules ● Calib3d : mainly for camera calibration ● Features2d : contain feature detectors, descriptors and descriptor matchers ● Objdetect: contain object detection algorithms ● Highgui: contain UI functionality to handle video and image ● Gpu : GPU-accelerated algorithms
  27. 27. About OpenCV API's ● All OpenCV classes are placed in cv namespace
  28. 28. Let's start coding
  29. 29. Reading an Image OpenCV Header Files Used ● #include <opencv2/highgui/highgui.hpp> OpenCV API's used ● imread(file_name,flags) ● imshow(“window_title”,image_variable) ● namedWindow(“window_title”,flags) ● WaitKey(0) ● Refer http://docs.opencv.org/modules/refman.html
  30. 30. Reading an Image Output
  31. 31. Reading a Video OpenCV Header Files Used ● #include <opencv2/highgui/highgui.hpp> OpenCV API's used ● VideoCapture cap(argv[1]) ● waitKey(30)
  32. 32. Reading from Camera OpenCV Header Files Used ● #include <opencv2/highgui/highgui.hpp> OpenCV API's used ● VideoCapture cap(argv[1]) ● waitKey(30)
  33. 33. Reading Pixel from Image and Mouse Interaction OpenCV Header Files Used ● #include <opencv2/highgui/highgui.hpp> OpenCV API's used ● image.at<uchar>(y,x); ● image.at<Vec3b>(y,x)[0]; ● setMouseCallback("Display window", mouse_callback, NULL);
  34. 34. Working with Mat type OpenCV Header Files Used ● #include <opencv2/highgui/highgui.hpp> OpenCV API's used ● Mat red(480,640,CV_8UC3,Scalar(0,0,255)); ● imwrite("red.jpg",red);
  35. 35. Adjusting brightness and contrast OpenCV Header Files Used ● #include <opencv2/highgui/highgui.hpp> OpenCV API's used ● new_image.at<Vec3b>(y,x)[c] = saturate_cast<uchar>( alpha*( image.at<Vec3b>(y ,x)[c] ) + beta ); ● Alpha = contrast ● Beta = Brightness ● saturate_cast ensure value is valid or not
  36. 36. Image Smoothing demo OpenCV Header Files Used ● #include "opencv2/imgproc/imgproc.hpp" ● #include "opencv2/highgui/highgui.hpp" OpenCV API's used ● Blur ● GaussianBlur ● MedianBlur ● bilateralFilter
  37. 37. Segmentation: Thresholding OpenCV Header Files Used ● #include "opencv2/imgproc/imgproc.hpp" ● #include "opencv2/highgui/highgui.hpp" OpenCV API's used ● cvtColor( src, src_gray, CV_RGB2GRAY ); ● threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type ); ● createTrackbar( trackbar_value, window_name,&threshold_value, max_value, Threshold_Demo );
  38. 38. Edge Detection OpenCV Header Files Used ● #include "opencv2/imgproc/imgproc.hpp" ● #include "opencv2/highgui/highgui.hpp" OpenCV API's used ● Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size );
  39. 39. Laplace & Sobel OpenCV Header Files Used ● #include "opencv2/imgproc/imgproc.hpp" ● #include "opencv2/highgui/highgui.hpp" OpenCV API's used ● Sobel( src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT ); ● Laplacian( src_gray, dst, ddepth, kernel_size, scale, delta, BORDER_DEFAULT );
  40. 40. Hough Transform(Circle & Line) OpenCV Header Files Used ● #include "opencv2/imgproc/imgproc.hpp" ● #include "opencv2/highgui/highgui.hpp" OpenCV API's used ● HoughCircles( src_gray, circles, CV_HOUGH_GRADIENT, 1, src_gray.rows/8, cannyThreshold, accumulatorThreshold, 0, 0 ); ● HoughLines( edges, s_lines, 1, CV_PI/180, min_threshold + s_trackbar, 0, 0 );
  41. 41. Contour Detection OpenCV Header Files Used ● #include "opencv2/imgproc/imgproc.hpp" ● #include "opencv2/highgui/highgui.hpp" OpenCV API's used ● findContours( canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );
  42. 42. Histogram OpenCV Header Files Used ● #include "opencv2/imgproc/imgproc.hpp" ● #include "opencv2/highgui/highgui.hpp" OpenCV API's used ● calcHist( &bgr_planes[0], 1, 0, Mat(), b_hist, 1, &histSize, &histRange, uniform, accumulate );
  43. 43. Harris_Corner_Detection OpenCV Header Files Used ● #include "opencv2/imgproc/imgproc.hpp" ● #include "opencv2/highgui/highgui.hpp" OpenCV API's used ● cornerHarris( src_gray, dst, blockSize, apertureSize, k, BORDER_DEFAULT );
  44. 44. Motion Detection, LK,FB,BS OpenCV Header Files Used ● #include "opencv2/video/tracking.hpp" ● #include "opencv2/imgproc/imgproc.hpp" ● #include "opencv2/highgui/highgui.hpp" OpenCV API's used ● calcOpticalFlowPyrLK(prevGray, gray, points[0], points[1], status, err, winSize, ● calcOpticalFlowFarneback(prevgray, gray, flow, 0.5, 3, 15, 3, 5, 1.2, 0); ● cvCalcMotionGradient( mhi, mask, orient, MAX_TIME_DELTA, MIN_TIME_DELTA, 3 );
  45. 45. Face Detection OpenCV Header Files Used ● #include "opencv2/objdetect/objdetect.hpp" ● #include "opencv2/highgui/highgui.hpp" ● #include "opencv2/imgproc/imgproc.hpp" OpenCV API's used ● cascade.detectMultiScale( smallImg, faces2, 1.1, 2, 0 |CV_HAAR_SCALE_IMAGE, Size(30, 30) );
  46. 46. Conclusion ● Discussed basics of Computer Vision ● Discussed about OpenCV ● Discussed OpenCV programming using C++ ● Discussed basic level examples to advanced level
  47. 47. Questions !!!
  48. 48. Thanks !!! Lentin Joseph Founder of QboticsLabs http://www.qboticslabs.com http://www.lentinjoseph.com
  • ssuser6430bc

    May. 25, 2020
  • karimdavoodi

    Dec. 1, 2019
  • manishkushwaha34

    Nov. 9, 2017
  • FenilShah34

    Nov. 3, 2017
  • nisnabudas

    Jul. 6, 2017
  • minhthuanit

    Apr. 27, 2017
  • JunshanHe

    Mar. 14, 2017
  • NarayanSapkota7

    Dec. 28, 2016
  • AhmedEAAbdalla

    Jun. 29, 2016
  • Rockgui

    Jan. 1, 2016
  • chandankumar546

    Sep. 20, 2015
  • trumae

    Sep. 9, 2015
  • pratik069

    Aug. 29, 2015

OpenCV Workshop slide by @Qbotics Labs http://www.qboticslabs.com/ http://blog.qboticslabs.com/

Views

Total views

3,495

On Slideshare

0

From embeds

0

Number of embeds

64

Actions

Downloads

191

Shares

0

Comments

0

Likes

13

×