SlideShare a Scribd company logo
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 in 1999
●
2000 : First alpha release
●
2006: First stable release
●
2009: Second major release
http://www.qboticslabs.com
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
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
Applications of OpenCV
●
Gesture recognition
●
Human-computer interaction(HCI)
●
Mobile robotics
●
Segmentation and recognition
●
Motion tracking
●
Augmented reality
●
Machine learning
http://www.qboticslabs.com
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.com
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
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
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
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 nautilus
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
Access eclipse via Unity Dash
Setting OpenCV in Eclipse
●
Setting Include path
– Properties -> C/C++ Build->Settings->Cross G++
Compiler->Includes
– $ pkg-config opencv --cflags
Setting OpenCV in Eclipse
●
Setting Lib path and libraries
– Properties -> C/C++ Build->Settings->Cross G++
Compiler->Libraries
– $ pkg-config opencv --libs
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;
}
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_file.cpp> `pkg-config
opencv –cflags –libs` -o
<output_name>
● $ ./output_name
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
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
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,flags)
● imshow(“window_title”,image_variable)
● namedWindow(“window_title”,flags)
● WaitKey(0)
● Refer
http://docs.opencv.org/modules/refman.html
Reading an Image
Output
Reading a Video
OpenCV Header Files Used
● #include <opencv2/highgui/highgui.hpp>
OpenCV API's used
● VideoCapture cap(argv[1])
● waitKey(30)
Reading from Camera
OpenCV Header Files Used
● #include <opencv2/highgui/highgui.hpp>
OpenCV API's used
● VideoCapture cap(argv[1])
● waitKey(30)
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);
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);
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
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
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 );
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 );
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 );
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 );
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) );
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 );
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 );
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 );
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) );
Conclusion
●
Discussed basics of Computer Vision
●
Discussed about OpenCV
●
Discussed OpenCV programming using C++
●
Discussed basic level examples to advanced
level
Questions !!!
Thanks !!!
Lentin Joseph
Founder of QboticsLabs
http://www.qboticslabs.com
http://www.lentinjoseph.com

More Related Content

What's hot

OpenCV presentation series- part 1
OpenCV presentation series- part 1OpenCV presentation series- part 1
OpenCV presentation series- part 1
Sairam Adithya
 
Face detection and recognition with pi
Face detection and recognition with piFace detection and recognition with pi
Face detection and recognition with pi
hetvi naik
 
Introduction to the Artificial Intelligence and Computer Vision revolution
Introduction to the Artificial Intelligence and Computer Vision revolutionIntroduction to the Artificial Intelligence and Computer Vision revolution
Introduction to the Artificial Intelligence and Computer Vision revolution
Darian Frajberg
 
An introduction to Deep Learning
An introduction to Deep LearningAn introduction to Deep Learning
An introduction to Deep Learning
Julien SIMON
 
Image Processing with OpenCV
Image Processing with OpenCVImage Processing with OpenCV
Image Processing with OpenCV
debayanin
 
Computer Vision - Artificial Intelligence
Computer Vision - Artificial IntelligenceComputer Vision - Artificial Intelligence
Computer Vision - Artificial Intelligence
ACM-KU
 
OpenCV
OpenCVOpenCV
Computer vision ppt
Computer vision pptComputer vision ppt
Computer vision ppt
geethamegharaj1
 
Computer vision introduction
Computer vision  introduction Computer vision  introduction
Computer vision introduction
Wael Badawy
 
Deep Learning Tutorial | Deep Learning Tutorial For Beginners | What Is Deep ...
Deep Learning Tutorial | Deep Learning Tutorial For Beginners | What Is Deep ...Deep Learning Tutorial | Deep Learning Tutorial For Beginners | What Is Deep ...
Deep Learning Tutorial | Deep Learning Tutorial For Beginners | What Is Deep ...
Simplilearn
 
Automated Face Detection System
Automated Face Detection SystemAutomated Face Detection System
Automated Face Detection System
Abhiroop Ghatak
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
Nitin Sharma
 
DEEPFAKE DETECTION TECHNIQUES: A REVIEW
DEEPFAKE DETECTION TECHNIQUES: A REVIEWDEEPFAKE DETECTION TECHNIQUES: A REVIEW
DEEPFAKE DETECTION TECHNIQUES: A REVIEW
vivatechijri
 
Overview of Computer Vision For Footwear Industry
Overview of Computer Vision For Footwear IndustryOverview of Computer Vision For Footwear Industry
Overview of Computer Vision For Footwear Industry
Tanvir Moin
 
Overview of computer vision and machine learning
Overview of computer vision and machine learningOverview of computer vision and machine learning
Overview of computer vision and machine learning
smckeever
 
Object detection
Object detectionObject detection
Object detection
Somesh Vyas
 
Introduction to Artificial Intelligence | AI using Deep Learning | Edureka
Introduction to Artificial Intelligence | AI using Deep Learning | EdurekaIntroduction to Artificial Intelligence | AI using Deep Learning | Edureka
Introduction to Artificial Intelligence | AI using Deep Learning | Edureka
Edureka!
 
Computer vision
Computer visionComputer vision
Computer vision
yusifagalar
 
Computer vision
Computer visionComputer vision
Computer vision
Mahmoud Hussein
 
Facial emotion recognition
Facial emotion recognitionFacial emotion recognition
Facial emotion recognition
Rahin Patel
 

What's hot (20)

OpenCV presentation series- part 1
OpenCV presentation series- part 1OpenCV presentation series- part 1
OpenCV presentation series- part 1
 
Face detection and recognition with pi
Face detection and recognition with piFace detection and recognition with pi
Face detection and recognition with pi
 
Introduction to the Artificial Intelligence and Computer Vision revolution
Introduction to the Artificial Intelligence and Computer Vision revolutionIntroduction to the Artificial Intelligence and Computer Vision revolution
Introduction to the Artificial Intelligence and Computer Vision revolution
 
An introduction to Deep Learning
An introduction to Deep LearningAn introduction to Deep Learning
An introduction to Deep Learning
 
Image Processing with OpenCV
Image Processing with OpenCVImage Processing with OpenCV
Image Processing with OpenCV
 
Computer Vision - Artificial Intelligence
Computer Vision - Artificial IntelligenceComputer Vision - Artificial Intelligence
Computer Vision - Artificial Intelligence
 
OpenCV
OpenCVOpenCV
OpenCV
 
Computer vision ppt
Computer vision pptComputer vision ppt
Computer vision ppt
 
Computer vision introduction
Computer vision  introduction Computer vision  introduction
Computer vision introduction
 
Deep Learning Tutorial | Deep Learning Tutorial For Beginners | What Is Deep ...
Deep Learning Tutorial | Deep Learning Tutorial For Beginners | What Is Deep ...Deep Learning Tutorial | Deep Learning Tutorial For Beginners | What Is Deep ...
Deep Learning Tutorial | Deep Learning Tutorial For Beginners | What Is Deep ...
 
Automated Face Detection System
Automated Face Detection SystemAutomated Face Detection System
Automated Face Detection System
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
DEEPFAKE DETECTION TECHNIQUES: A REVIEW
DEEPFAKE DETECTION TECHNIQUES: A REVIEWDEEPFAKE DETECTION TECHNIQUES: A REVIEW
DEEPFAKE DETECTION TECHNIQUES: A REVIEW
 
Overview of Computer Vision For Footwear Industry
Overview of Computer Vision For Footwear IndustryOverview of Computer Vision For Footwear Industry
Overview of Computer Vision For Footwear Industry
 
Overview of computer vision and machine learning
Overview of computer vision and machine learningOverview of computer vision and machine learning
Overview of computer vision and machine learning
 
Object detection
Object detectionObject detection
Object detection
 
Introduction to Artificial Intelligence | AI using Deep Learning | Edureka
Introduction to Artificial Intelligence | AI using Deep Learning | EdurekaIntroduction to Artificial Intelligence | AI using Deep Learning | Edureka
Introduction to Artificial Intelligence | AI using Deep Learning | Edureka
 
Computer vision
Computer visionComputer vision
Computer vision
 
Computer vision
Computer visionComputer vision
Computer vision
 
Facial emotion recognition
Facial emotion recognitionFacial emotion recognition
Facial emotion recognition
 

Similar to OpenCV Workshop

"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres..."The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
Edge AI and Vision Alliance
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
Opersys inc.
 
“OpenCV: Past, Present and Future,” a Presentation from OpenCV.org
“OpenCV: Past, Present and Future,” a Presentation from OpenCV.org“OpenCV: Past, Present and Future,” a Presentation from OpenCV.org
“OpenCV: Past, Present and Future,” a Presentation from OpenCV.org
Edge AI and Vision Alliance
 
How to Build & Use OpenCL on OpenCV & Android NDK
How to Build & Use OpenCL on OpenCV & Android NDKHow to Build & Use OpenCL on OpenCV & Android NDK
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
Jody Garnett
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Opersys inc.
 
OpenCV (Open source computer vision)
OpenCV (Open source computer vision)OpenCV (Open source computer vision)
OpenCV (Open source computer vision)
Chetan Allapur
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
Annie Huang
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA Testers
Javan Rasokat
 
Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)
Peter Bittner
 
Chromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChromium: NaCl and Pepper API
Chromium: NaCl and Pepper API
Chang W. Doh
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a
corehard_by
 
oSC-2023-Cross-Build.pdf
oSC-2023-Cross-Build.pdfoSC-2023-Cross-Build.pdf
oSC-2023-Cross-Build.pdf
AdrianSchrter1
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
Microsoft
 
The State of the Veil Framework
The State of the Veil FrameworkThe State of the Veil Framework
The State of the Veil Framework
VeilFramework
 
Introduction to JIB and Google Cloud Run
Introduction to JIB and Google Cloud RunIntroduction to JIB and Google Cloud Run
Introduction to JIB and Google Cloud Run
Saiyam Pathak
 
Android Internals
Android InternalsAndroid Internals
Android Internals
Opersys inc.
 
The Future of Security and Productivity in Our Newly Remote World
The Future of Security and Productivity in Our Newly Remote WorldThe Future of Security and Productivity in Our Newly Remote World
The Future of Security and Productivity in Our Newly Remote World
DevOps.com
 
Nodejs
NodejsNodejs
"Making OpenCV Code Run Fast," a Presentation from Intel
"Making OpenCV Code Run Fast," a Presentation from Intel"Making OpenCV Code Run Fast," a Presentation from Intel
"Making OpenCV Code Run Fast," a Presentation from Intel
Edge AI and Vision Alliance
 

Similar to OpenCV Workshop (20)

"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres..."The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
 
“OpenCV: Past, Present and Future,” a Presentation from OpenCV.org
“OpenCV: Past, Present and Future,” a Presentation from OpenCV.org“OpenCV: Past, Present and Future,” a Presentation from OpenCV.org
“OpenCV: Past, Present and Future,” a Presentation from OpenCV.org
 
How to Build & Use OpenCL on OpenCV & Android NDK
How to Build & Use OpenCL on OpenCV & Android NDKHow to Build & Use OpenCL on OpenCV & Android NDK
How to Build & Use OpenCL on OpenCV & Android NDK
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013
 
OpenCV (Open source computer vision)
OpenCV (Open source computer vision)OpenCV (Open source computer vision)
OpenCV (Open source computer vision)
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA Testers
 
Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)
 
Chromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChromium: NaCl and Pepper API
Chromium: NaCl and Pepper API
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a
 
oSC-2023-Cross-Build.pdf
oSC-2023-Cross-Build.pdfoSC-2023-Cross-Build.pdf
oSC-2023-Cross-Build.pdf
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
 
The State of the Veil Framework
The State of the Veil FrameworkThe State of the Veil Framework
The State of the Veil Framework
 
Introduction to JIB and Google Cloud Run
Introduction to JIB and Google Cloud RunIntroduction to JIB and Google Cloud Run
Introduction to JIB and Google Cloud Run
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
The Future of Security and Productivity in Our Newly Remote World
The Future of Security and Productivity in Our Newly Remote WorldThe Future of Security and Productivity in Our Newly Remote World
The Future of Security and Productivity in Our Newly Remote World
 
Nodejs
NodejsNodejs
Nodejs
 
"Making OpenCV Code Run Fast," a Presentation from Intel
"Making OpenCV Code Run Fast," a Presentation from Intel"Making OpenCV Code Run Fast," a Presentation from Intel
"Making OpenCV Code Run Fast," a Presentation from Intel
 

Recently uploaded

Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 

Recently uploaded (20)

Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 

OpenCV Workshop

  • 1. OpenCV C++ Workshop Lentin Joseph Founder of Qbotics Labs www.qboticslabs.com
  • 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. 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. 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. 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. Installing OpenCV ● Installing from source code ● Installing from Ubuntu packages http://www.qboticslabs.com
  • 7. Installing OpenCV from Ubuntu packages $ sudo apt-get update $ sudo apt-get install libopencv-dev http://www.qboticslabs.com
  • 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. 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. 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. Installing OpenCV from source code http://www.qboticslabs.com
  • 12. Check OpenCV is installed !!! ● $ pkg-config opencv –cflags $ pkg-config opencv --libs
  • 13. Setting OpenCV in Eclipse ● Install OpenJDK from Ubuntu Software
  • 14. Check Ubuntu Version !!! ● System settings -> Details -> Overview
  • 16. Extract and Install Eclipse ● cd /opt/ && sudo tar -zxvf ~/Downloads/eclipse-*.tar.gz ● Without using command ● $ gksudo nautilus
  • 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. Access eclipse via Unity Dash
  • 19. Setting OpenCV in Eclipse ● Setting Include path – Properties -> C/C++ Build->Settings->Cross G++ Compiler->Includes – $ pkg-config opencv --cflags
  • 20. Setting OpenCV in Eclipse ● Setting Lib path and libraries – Properties -> C/C++ Build->Settings->Cross G++ Compiler->Libraries – $ pkg-config opencv --libs
  • 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. Running test code !!! ● Setting command line argument – Project -> Run as-> Run Configurations
  • 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. 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. 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. About OpenCV API's ● All OpenCV classes are placed in cv namespace
  • 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
  • 31. Reading a Video OpenCV Header Files Used ● #include <opencv2/highgui/highgui.hpp> OpenCV API's used ● VideoCapture cap(argv[1]) ● waitKey(30)
  • 32. Reading from Camera OpenCV Header Files Used ● #include <opencv2/highgui/highgui.hpp> OpenCV API's used ● VideoCapture cap(argv[1]) ● waitKey(30)
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Conclusion ● Discussed basics of Computer Vision ● Discussed about OpenCV ● Discussed OpenCV programming using C++ ● Discussed basic level examples to advanced level
  • 48. Thanks !!! Lentin Joseph Founder of QboticsLabs http://www.qboticslabs.com http://www.lentinjoseph.com