SlideShare a Scribd company logo
1 of 48
Download to read offline
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 with python
openCV with pythonopenCV with python
openCV with pythonWei-Wen Hsu
 
Logical Volume Manager. An Introduction
Logical Volume Manager. An IntroductionLogical Volume Manager. An Introduction
Logical Volume Manager. An IntroductionJuan A. Suárez Romero
 
Introduction To TensorFlow
Introduction To TensorFlowIntroduction To TensorFlow
Introduction To TensorFlowSpotle.ai
 
Introduction To TensorFlow | Deep Learning Using TensorFlow | TensorFlow Tuto...
Introduction To TensorFlow | Deep Learning Using TensorFlow | TensorFlow Tuto...Introduction To TensorFlow | Deep Learning Using TensorFlow | TensorFlow Tuto...
Introduction To TensorFlow | Deep Learning Using TensorFlow | TensorFlow Tuto...Edureka!
 
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)Devananda Van Der Veen
 
Transfer Learning and Fine-tuning Deep Neural Networks
 Transfer Learning and Fine-tuning Deep Neural Networks Transfer Learning and Fine-tuning Deep Neural Networks
Transfer Learning and Fine-tuning Deep Neural NetworksPyData
 
Latent diffusions vs DALL-E v2
Latent diffusions vs DALL-E v2Latent diffusions vs DALL-E v2
Latent diffusions vs DALL-E v2Vitaly Bondar
 
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletServlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletJustin Lin
 
Scaling the Container Dataplane
Scaling the Container Dataplane Scaling the Container Dataplane
Scaling the Container Dataplane Michelle Holley
 
Hadoop Architecture and HDFS
Hadoop Architecture and HDFSHadoop Architecture and HDFS
Hadoop Architecture and HDFSEdureka!
 
Object Detection with Tensorflow
Object Detection with TensorflowObject Detection with Tensorflow
Object Detection with TensorflowElifTech
 
Docker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutesDocker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutesLuciano Fiandesio
 
Ceph and Openstack in a Nutshell
Ceph and Openstack in a NutshellCeph and Openstack in a Nutshell
Ceph and Openstack in a NutshellKaran Singh
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker, Inc.
 
Deep Learning Explained
Deep Learning ExplainedDeep Learning Explained
Deep Learning ExplainedMelanie Swan
 
Introduction to Deep Learning (NVIDIA)
Introduction to Deep Learning (NVIDIA)Introduction to Deep Learning (NVIDIA)
Introduction to Deep Learning (NVIDIA)Rakuten Group, Inc.
 
Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with MavenSid Anand
 

What's hot (20)

openCV with python
openCV with pythonopenCV with python
openCV with python
 
Logical Volume Manager. An Introduction
Logical Volume Manager. An IntroductionLogical Volume Manager. An Introduction
Logical Volume Manager. An Introduction
 
Introduction To TensorFlow
Introduction To TensorFlowIntroduction To TensorFlow
Introduction To TensorFlow
 
Introduction To TensorFlow | Deep Learning Using TensorFlow | TensorFlow Tuto...
Introduction To TensorFlow | Deep Learning Using TensorFlow | TensorFlow Tuto...Introduction To TensorFlow | Deep Learning Using TensorFlow | TensorFlow Tuto...
Introduction To TensorFlow | Deep Learning Using TensorFlow | TensorFlow Tuto...
 
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
 
Transfer Learning and Fine-tuning Deep Neural Networks
 Transfer Learning and Fine-tuning Deep Neural Networks Transfer Learning and Fine-tuning Deep Neural Networks
Transfer Learning and Fine-tuning Deep Neural Networks
 
Latent diffusions vs DALL-E v2
Latent diffusions vs DALL-E v2Latent diffusions vs DALL-E v2
Latent diffusions vs DALL-E v2
 
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletServlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
 
Scaling the Container Dataplane
Scaling the Container Dataplane Scaling the Container Dataplane
Scaling the Container Dataplane
 
Hadoop Architecture and HDFS
Hadoop Architecture and HDFSHadoop Architecture and HDFS
Hadoop Architecture and HDFS
 
Object Detection with Tensorflow
Object Detection with TensorflowObject Detection with Tensorflow
Object Detection with Tensorflow
 
Docker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutesDocker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutes
 
Ceph and Openstack in a Nutshell
Ceph and Openstack in a NutshellCeph and Openstack in a Nutshell
Ceph and Openstack in a Nutshell
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to Docker
 
Docker.pptx
Docker.pptxDocker.pptx
Docker.pptx
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
git.pdf
git.pdfgit.pdf
git.pdf
 
Deep Learning Explained
Deep Learning ExplainedDeep Learning Explained
Deep Learning Explained
 
Introduction to Deep Learning (NVIDIA)
Introduction to Deep Learning (NVIDIA)Introduction to Deep Learning (NVIDIA)
Introduction to Deep Learning (NVIDIA)
 
Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with Maven
 

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 DevelopersOpersys 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.orgEdge AI and Vision Alliance
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers WorkshopJody 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 TestersJavan 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 APIChang W. Doh
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'acorehard_by
 
oSC-2023-Cross-Build.pdf
oSC-2023-Cross-Build.pdfoSC-2023-Cross-Build.pdf
oSC-2023-Cross-Build.pdfAdrianSchrter1
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Microsoft
 
The State of the Veil Framework
The State of the Veil FrameworkThe State of the Veil Framework
The State of the Veil FrameworkVeilFramework
 
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 RunSaiyam Pathak
 
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 WorldDevOps.com
 
"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 IntelEdge 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

What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Anthony Dahanne
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 

Recently uploaded (20)

What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 

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