SlideShare a Scribd company logo
1 of 113
Download to read offline
DRIVING ASSISTANT SOLUTIONS
WITH ANDROID
@giorgionatili
ABOUT ME
✴ Engineering Manager at
Akamai Technologies
✴ Organizer of DroidconBos
(www.droidcon-boston.com)
✴ Organizer of Swiftfest 2017
(www.swiftfest.io)
✴ Organizer of Hashcon 2018
(www.hascon.io)
✴ Founder of Mobile Tea 

(www.mobiletea.net)
@giorgionatili@DroidconBos
AGENDA
✴ Computer vision essentials
✴ The fastest ever introduction to OpenCV
✴ Setup the OpenCV Android SDK and C++ integration
✴ How to detect (traffic) lights
✴ How to detect driving lanes
✴ Detecting features from a video source
✴ Challenges and next steps
THE PROBLEM
What we are trying to do
@giorgionatili@DroidconBos
GOALS
✴ Provide driving assistance solutions to everyone
✴ Improve the driving experience of everyone (signals interpreting,
contextual information, etc.)
✴ Reduce the number of accidents due to distractions
✴ Monitor driving styles to train offline models
@giorgionatili@DroidconBos
AM I INSIDE THE LANES?
@giorgionatili@DroidconBos
THERE ARE OBSTACLES I HAVEN’T NOTICED?
@giorgionatili@DroidconBos
CAN I PARK HERE?
@giorgionatili@DroidconBos
PONY DRIVE
COMPUTER VISION
Exploring the building blocks of computer vision
“Computer Vision combines magic and
science to create illusions.
-Marco Tempes
@giorgionatili@DroidconBos
DATA SOURCES
✴ Images are a source of information, the way a software
transform them is crucial to get a clean data set
✴ A good source of data should be clean, that’s what you
achieve trough image processing
@giorgionatili@DroidconBos
DATA MANIPULATION
✴ An image is a 2D projection of a 3D scene expressed as the
quantized result of f(i, j)
✴ Digital images are created by sampling a continuos image into
discrete elements
@giorgionatili@DroidconBos
HOW THE CAMERA WORKS
@giorgionatili@DroidconBos
IMAGES AND FRAMES
✴ Images and frames are made up of pixels organized in a 2D
array
✴ In a color image each pixel can be anything from 8 to 32 bits
wide
✴ A grayscale images use 8 bits per pixel
✴ A frame is a single image in a video sequence
@giorgionatili@DroidconBos
IMAGES, PIXELS & SAMPLING
✴ Digital images are created by sampling a continuos image into
discrete elements
✴ Digital images sensors consists of a 2D array of
photosensitive elements (pixels/image points/sampling points)
✴ The number of samples in an image limit the objects that can
be distinguished or recognized in the image
@giorgionatili@DroidconBos
BITS AND CHANNELS
✴ Each pixel in a digital image is the representation of the
brightness of a given point in the scene
✴ Typically the number of levels per channel is k=2b where b is
the number of bits (often 8)
@giorgionatili@DroidconBos
Why this is important?
@giorgionatili@DroidconBos
Because a reduced number of bits
save memory while preserving the
most meaningful information!
@giorgionatili@DroidconBos
@giorgionatili@DroidconBos
COLOR IMAGES
✴ Color images are a very rich set of information
✴ Color analysis can help to locate traffic signs, luminance and
chrominance are a source of interesting information
✴ However, colors are not always important to determine the
content of an image
@giorgionatili@DroidconBos
YOU CAN STILL RECOGNIZE THE ROSTER
@giorgionatili@DroidconBos
GRAY SCALE IMAGES
✴ Gray scale images are smaller in size and easier to analyze
✴ Luminance is by far more important than chrominance in
distinguish visual features
✴ In most cases luminance provides enough information to
detect the edges of an image
✴ Processing gray scale images reduce code complexity and
learning curve
@giorgionatili@DroidconBos
EFFECTIVE GRAY SCALE IMAGES
✴ Scale the image to 25% of the original size
✴ Determine a region of interest to process
✴ Apply a gray scale transformation
image = cv::imread("puppy.bmp", cv::IMREAD_GRAYSCALE);
@giorgionatili@DroidconBos
IMAGE NOISE
✴ Image noise is the measurement of the degradation of an
image
✴ Image noise is usually an aspect of electronic noise and it can
be produced by the sensor that is acquiring the image (aka the
camera)
@giorgionatili@DroidconBos
REDUCING NOISE THROUGH IMAGE AVERAGING
✴ Image averaging works on the assumption that the noise in
your image is truly random
✴ This way, random fluctuations above and below actual image
data will gradually produce an average image
@giorgionatili@DroidconBos
IMAGE AVERAGING
source: cambridgeincolour.com
@giorgionatili@DroidconBos
OTHER TECHNIQUES
Gaussian filter
noise reduction
Salt an pepper filter
noise reduction
@giorgionatili@DroidconBos
IMAGE PROCESSING
@giorgionatili@DroidconBos
THRESHOLD
✴ When the source image is not of good quality, thresholding
techniques can be used to separate the object of interest from
the background
✴ Thresholding techniques imply the usage of algorithms and
the processing lighting information
@giorgionatili@DroidconBos
IMAGE THRESHOLDING
Thresholding used to create a binary representation of a grayscale image
@giorgionatili@DroidconBos
FEATURES DETECTION
In computer vision and image processing the concept of feature detection
refers to methods that aim at computing abstractions of image
information and making local decisions at every image point whether
there is an image feature of a given type at that point or not
@giorgionatili@DroidconBos
IMAGE FEATURES
✴ There is no universal or exact definition of what constitutes a
feature, and the exact definition often depends on the
problem or the type of application
✴ Image feature can be corners, blobs, edges, etc.
@giorgionatili@DroidconBos
CORNERS AND BLOBS DETECTION
Source N. Snavely
@giorgionatili@DroidconBos
FEATURES DESCRIPTION
✴ The second step in the process of using image features is
feature description
✴ The feature descriptors are used to provide more information
around the interest points computed over the local region/
neighborhood of the detected feature
@giorgionatili@DroidconBos
WHAT’S IN A DESCRIPTOR
✴ A sampling pattern, where to sample points in the region
around the descriptor
✴ Orientation compensation, some mechanism to measure the
orientation of the key point and rotate it to compensate for
rotation changes
✴ Sampling pairs, the logic to decide which pairs to compare
when building the final descriptor
@giorgionatili@DroidconBos
BINARY DESCRIPTORS
✴ These descriptors are floating-point vectors that have a
dimension of 64, 128, or sometimes even longer
✴ In order to reduce the memory and computational load it’s
possible to use binary descriptors composed of a simple
sequence of bits (0s and 1s)
✴ With OpenCV using a binary descriptor is no different from
using other descriptors
@giorgionatili@DroidconBos
BRIEF
✴ Describes an interest point with a description vector of N
pairs
✴ The algorithm chooses N random pairs of pixels in the 31x31
patch region by several randomization methods (uniform,
Gaussian, and others)
✴ The algorithm compares them to construct the binary string
@giorgionatili@DroidconBos
ORB
✴ The ORB descriptor adds orientation to BRIEF by steering the
interest point to the canonical orientation
✴ For pixels pair sampling method it chooses the pixel pairs in a
way that maximizes the variance and reduces the correlation
@giorgionatili@DroidconBos
BRISK
✴ The Binary Robust Invariant Scalable Key-points (BRISK)
descriptor is built on 60 points arranged in four concentric
rings
✴ To calculate the orientation, every sampling region is
smoothed with a Gaussian filter and local gradients are
calculated
@giorgionatili@DroidconBos
FREAK
✴ The Fast Retina Key-point (FREAK) descriptor's circular shape
is based on the human retinal system
✴ As for the sampling pattern, the best pairs of pixels are
learned using an of offline training algorithm to maximize the
point-pairs variance and minimize the correlation
@giorgionatili@DroidconBos
SHOW ME THE CODE!!!
@giorgionatili@DroidconBos
FAST FEATURE DETECTOR
Mat& mGr = *(Mat*)addrGray;
Mat& mRgb = *(Mat*)addrRgba;
vector<KeyPoint> v;
Ptr<FeatureDetector> detector = FastFeatureDetector::create(50);
detector->detect(mGr, v);
for( unsigned int i = 0; i < v.size(); i++ )
{
const KeyPoint& kp = v[i];
circle(mRgb, Point(kp.pt.x, kp.pt.y), 10, Scalar(255,0,0,255));
}
@giorgionatili@DroidconBos
WHAT’S ABOUT A DEMO?
AN INTRODUCTION TO
OPENCV
Exploring the building blocks of OpenCV
@giorgionatili@DroidconBos
IN A NUTSHELL
✴ OpenCV is an Image Processing library
✴ Available for C, C++, and Python
✴ Open Source and free
✴ Easy to use and install (kinda)
@giorgionatili@DroidconBos
BASIC OPENCV STRUCTURES
✴ Point, Point2f - 2D Point
✴ Size - 2D size structure
✴ Rect - 2D rectangle object
✴ RotatedRect - Rect object with angle
✴ Mat - image object
@giorgionatili@DroidconBos
✴ Constructor - (int x, y)
✴ Functions
✴ Point.dot(<Point>) - computes dot product
✴ Point.inside(<Rect>) - returns true if point is inside
2D POINT
@giorgionatili@DroidconBos
✴ Constructor - (int width, height)
✴ Functions
✴ Point.area() - returns (width * height)
SIZE
@giorgionatili@DroidconBos
MAT
✴ It stores images information and their components
✴ Main items:
✴ rows, cols - length and width(int)
✴ channels - 1: grayscale, 3: BGR
✴ depth: CV_<depth>C<num chan>
@giorgionatili@DroidconBos
OPENCV CAPABILITIES
✴ Image data manipulation (allocation, copying, setting, conversion)
✴ Image and video I/O (file/camera based in, image/video file out)
✴ Basic image processing (filtering, edge and corner detection,
sampling and interpolation, color conversion, histograms)
✴ Motion analysis (optical flow, motion segmentation, tracking)
✴ Object recognition (eigen-methods, HMM)
@giorgionatili@DroidconBos
GEOMETRICAL TRANSFORMATIONS
✴ resize() Resize image
✴ getRectSubPix() Extract an image patch
✴ warpAffine() Warp image affinely
✴ convertMaps() Optimize maps for a faster remap
@giorgionatili@DroidconBos
VARIOUS IMAGE TRANSFORMATIONS
✴ cvtColor() Convert image from different color spaces
✴ threshold() Convert grayscale image to binary image
✴ floodFill() Find a connected components
@giorgionatili@DroidconBos
IMAGE PROCESSING FILTERING
✴ filter2D() Non-separable linear filter
✴ sepFilter2D() Separable linear filter
✴ boxFilter() Blurs an image using the box filter
✴ GaussianBlur() Blurs an image using a Gaussian filter
@DroidconBos @giorgionatili
SUPPORTED PLATFORMS
@DroidconBos @giorgionatili
WINDOWS
@DroidconBos @giorgionatili
LINUX
@DroidconBos @giorgionatili
MACOS
@DroidconBos @giorgionatili
ANDROID
@DroidconBos @giorgionatili
IOS
@giorgionatili@DroidconBos
DESIGN PRINCIPLES
✴ OpenCV was designed to be cross-platform
✴ The library was written in C and this makes OpenCV portable
to almost any commercial system
✴ Since version 2.0, OpenCV includes its traditional C interface
as well as the new C++ one
✴ For the most part, new OpenCV algorithms are now
developed in C++
@giorgionatili@DroidconBos
MUCH MORE COMFORTABLE
OPENCV ANDROID SDK
A practical Java wrapper to OpenCV
@giorgionatili@DroidconBos
STEP 1- GET THE IDK
Download and unzip the Android SDK from OpenCV 

bit.ly/opencv-330
@giorgionatili@DroidconBos
STEP 2 - EXPLORE THE FOLDERS
@giorgionatili@DroidconBos
STEP 3 - CREATE A NEW PROJECT (C++ SUPPORT)
@giorgionatili@DroidconBos
STEP 4 - IMPORT THE ANDROID SDK
✴ File > New > Import Module
✴ Browse to the ./OpenCV-android-sdk/sdk/java folder
✴ Accept the default options 
@giorgionatili@DroidconBos
STEP 5 - ADD OPENCV AS A DEPENDENCY
✴ Select the app module and open the settings
✴ On the dependencies tab and add the imported module
@giorgionatili@DroidconBos
STEP 6 - CONFIGURE GRADLE AND THE IDK
Open the build.gradle file into the imported module and
update the SDK versions and build tools to match the settings
of the app build.gradle file
@giorgionatili@DroidconBos
STEP 7 - ADD JNI REQUIRED FOLDERS
✴ Switch to the Android view in the project navigation
✴ Right click on the project and select the option New > Folder
✴ Select the JNI option and create a folder named jniLibs
@giorgionatili@DroidconBos
STEP 8 - NATIVE LAYER INCLUSION AND CONFIGURATION
✴ Go back to the ./OpenCV-android-sdk folder and copy
the folders contained in ./OpenCV-android-sdk/sdk/
native/libs into the jniLibs folder
✴ Remove all the .a files and keep only the .so files 
✴ Locate the gradle.properties file and add the option
android.useDeprecatedNdk=true
@giorgionatili@DroidconBos
IF YOU DON’T SEE THE FOLDERS COMMENT THE GRADLE FILE
@giorgionatili@DroidconBos
STEP 9 - ADD A REFERENCE TO OPENCV
Open the file CMakeLists.txt and add a reference to OpenCV
as a target library
target_link_libraries( # Specifies the target library.
images-lib
# Links the target library to the log library
# included in the NDK.
${log-lib} lib_opencv)
@giorgionatili@DroidconBos
STEP 10 - LOAD OPENCV IN THE APP
static {
if(!OpenCVLoader.initDebug()) {
Log.d(TAG, "OpenCV Not Loaded");
} else {
Log.d(TAG, "OpenCV Loaded!!!!!");
}
}
@giorgionatili@DroidconBos
RUN THE APP
ANDROID & C++
Never-ending and high-performing extensions of
an Android app
@giorgionatili@DroidconBos
BOOST YOUR APPS
✴ Add existing libraries to support advanced features
✴ Customize existing APIs to match your app workflow
✴ Write cross platform code (seriously ?!?)
✴ Dramatically improve performances
@giorgionatili@DroidconBos
PERFORMANCE ANALYSIS
JNI calls using OpenCV
through C++
JNI calls using the OpenCV
Java API
@giorgionatili@DroidconBos
ADD C++ CODE
✴ Go back on the project and open the MainActivity
✴ Search for a static native function, add another one with a
different name but the same signature
✴ Use Android Studio to create the missing function (alt +
enter)
@giorgionatili@DroidconBos
ADD C++ CODE
✴ Search for a file named native-lib.cpp
✴ The file, originally created by Android Studio, should already
contains some code and should have added an empty function
named like
Java_io_a2xe_experiments_opencv2integration_Ma
inActivity_helloFromOpenCV
@giorgionatili@DroidconBos
REFERENCE THE C++ CODE
add_library( # Sets the name of the library.
images-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/images-lib.cpp )
target_link_libraries( # Specifies the target library.
images-lib
# Links the target library to the log library
# included in the NDK.
${log-lib} lib_opencv)
@giorgionatili@DroidconBos
LOAD THE C++ CODE
static {
System.loadLibrary("native-lib");
System.loadLibrary("images-lib");
}
@giorgionatili@DroidconBos
RUN THE APP
ANDROID AND
COMPUTER VISION
Bringing the magic into a mobile device
@giorgionatili@DroidconBos
APP ARCHITECTURE
✴ The application structure doesn’t change too much from
whatever clean architecture you prefer
✴ There are two folders that start to be crucial: the cpp and the
jniLibs ones
✴ Keeping the file and the logic well organized is crucial
✴ Separate c++ files and then include them in the main one
you reference into the CMake.txt file
@giorgionatili@DroidconBos
PERFORMANCES
✴ As already mentioned, the less you use a wrapper, the faster
will be the execution of the c++ functions
✴ The c++ libraries and files are execute much faster on all the
current Android distributions
@giorgionatili@DroidconBos
BENCHMARK
@giorgionatili@DroidconBos
BENCHMARK
@giorgionatili@DroidconBos
BENCHMARK
@giorgionatili@DroidconBos
RECOMMENDATIONS
✴ Don’t start to use only C++ in your projects
✴ Prototype fast with a wrapper (when available) and then
determine if a direct call to C++ is beneficial for the app
performances
✴ Be very precise when versioning your dependencies; embed
them (static initialization) or use the OpenCV Manager
@giorgionatili@DroidconBos
ANDROID OPENCV MANAGER
✴ Less memory usage, all apps use the same binaries from
service and do not keep native libs inside themselves
✴ Hardware specific optimizations for all supported platforms
✴ Trusted OpenCV library source, all packages with OpenCV are
published on Google Play market
✴ Regular updates and bug fixes distributed on your behalf
@giorgionatili@DroidconBos
OPENCV MANAGER FLOW
START CODING
From theory to practice
@DroidconBos @giorgionatili
(TRAFFIC) LIGHTS
@giorgionatili@DroidconBos
STEPS
✴ Read the Bitmap data from an image
✴ Convert the Bitmap data to a Mat
✴ Convert the Mat to gray scale
✴ Find the minimum and maximum values in the result Array
✴ Add a circle to the result Array
@giorgionatili@DroidconBos
DETECT A TRAFFIC LIGHT


Mat rgba = new Mat();
Utils.bitmapToMat(bitmap, rgba);
Mat grayScaleGaussianBlur = new Mat();
Imgproc.cvtColor(rgba, grayScaleGaussianBlur,
Imgproc.COLOR_BGR2GRAY);

Imgproc.GaussianBlur(grayScaleGaussianBlur,
grayScaleGaussianBlur, new Size(gaussianBlurValue,
gaussianBlurValue), 0);
Core.MinMaxLocResult minMaxLocResultBlur =
Core.minMaxLoc(grayScaleGaussianBlur);

Imgproc.circle(rgba, minMaxLocResultBlur.maxLoc, 30, new
Scalar(255), 3);
@DroidconBos @giorgionatili
DRIVING LANES
@giorgionatili@DroidconBos
STEPS - DETECT EDGES
✴ Convert a Bitmap to a Mat structure
✴ Convert the Mat to gray scale
✴ Apply the Canny Edges algorithm
✴ Convert the Mat back to a Bitmap
@giorgionatili@DroidconBos
DETECT EDGES
Mat rgba = new Mat();
Utils.bitmapToMat(bitmap, rgba);
Mat edges = new Mat(rgba.size(), CvType.CV_8UC1);
Imgproc.cvtColor(rgba, edges, Imgproc.COLOR_RGB2GRAY, 4);
Imgproc.Canny(edges, edges, 70, 100);
Utils.matToBitmap(edges, resultBitmap);
@giorgionatili@DroidconBos
STEPS - RENDER HOUGH TRANSFORM
✴ Convert a Bitmap to a Mat structure
✴ Apply the Canny Edges algorithm
✴ Determine the lines in the Hough space accordingly to the
detected edges
✴ Iterate the Array and draw the lines
@giorgionatili@DroidconBos
HOUGH TRANSFORM
Mat rgba = new Mat();
Utils.bitmapToMat(bitmap, rgba);
Mat edges = new Mat();
Mat mat = new Mat();
Mat lines = new Mat();
Utils.bitmapToMat(bitmap, mat);
Imgproc.Canny(mat, edges, 50, 90);
int threshold = 20;
int minLineSize = 38;
int lineGap = 30;
Imgproc.HoughLinesP(edges, lines, 1, Math.PI / 180, threshold, minLineSize,
lineGap);
for (int x = 0; x < lines.rows(); x++){
// Iterate the array and draw the lines
}
Bitmap bmp = Bitmap.createBitmap(rgba.cols(), rgba.rows(),
Bitmap.Config.ARGB_8888);
Utils.matToBitmap(rgba, bmp);
@DroidconBos @giorgionatili
FEATURES DETECTION
@giorgionatili@DroidconBos
STEPS
✴ Create a feature detector
✴ Detect the features in the image
✴ Add a circle for each feature in the RGB Mat being processed
@giorgionatili@DroidconBos
HOUGH TRANSFORM
Mat& mGr = *(Mat*)addrGray;
Mat& mRgb = *(Mat*)addrRgba;
vector<KeyPoint> v;
Ptr<FeatureDetector> detector =
FastFeatureDetector::create(50);
detector->detect(mGr, v);
for( unsigned int i = 0; i < v.size(); i++ )
{
const KeyPoint& kp = v[i];
circle(mRgb, Point(kp.pt.x, kp.pt.y), 10,
Scalar(255,0,0,255));
}
@giorgionatili@DroidconBos
RUN THE DEMO
CHALLENGES
The main problems still to solve
@giorgionatili@DroidconBos
UNKNOWN TRANSFORMATION
✴ Device camera could have different orientation accordingly to
the setup
✴ Unknown transformations should then be applied to the data
source
✴ Calculate and measure all the possible transformations is
something that shouldn’t happen on the device
@giorgionatili@DroidconBos
DIFFERENT SOURCES
✴ Every device has a different camera with different
specifications
✴ It’s important to determine which optimizations to apply
based on the camera
@giorgionatili@DroidconBos
MOVEMENT
✴ The camera is never static, it moves with the car and this
creates more issues when comparing objects
✴ The camera is not supposed to be stable enough to execute
straights images comparison
@giorgionatili@DroidconBos
✴ Mixing data with Android Automotive hardware abstraction
layer API
✴ Using existing data set to train the model in advance
✴ When connected to internet gather environmental
information to tune the camera and the noise reduction
strategies
DATA MASHUP
QUESTIONS
and potentially answers :)
““If you can count on not having an
accident, you can get rid of a huge amount
of the crash structure and the airbags.”
- Elon Musk
THANKS!
@giorgionatili








g@2xe.io

More Related Content

Similar to Driving Assistant Solutions with Android

IRJET - Face Recognition based Attendance System
IRJET -  	  Face Recognition based Attendance SystemIRJET -  	  Face Recognition based Attendance System
IRJET - Face Recognition based Attendance SystemIRJET Journal
 
IRJET - A Research on Video Forgery Detection using Machine Learning
IRJET -  	  A Research on Video Forgery Detection using Machine LearningIRJET -  	  A Research on Video Forgery Detection using Machine Learning
IRJET - A Research on Video Forgery Detection using Machine LearningIRJET Journal
 
Edge AI: Deep Learning techniques for Computer Vision applied to Embedded Sys...
Edge AI: Deep Learning techniques for Computer Vision applied to Embedded Sys...Edge AI: Deep Learning techniques for Computer Vision applied to Embedded Sys...
Edge AI: Deep Learning techniques for Computer Vision applied to Embedded Sys...Giacomo Bartoli
 
car number plate detection using matlab image & video processing
car number plate detection using matlab image & video processingcar number plate detection using matlab image & video processing
car number plate detection using matlab image & video processingKesava Korukonda
 
License Plate Recognition
License Plate RecognitionLicense Plate Recognition
License Plate RecognitionAmr Rashed
 
Easy path to machine learning
Easy path to machine learningEasy path to machine learning
Easy path to machine learningwesley chun
 
Efficient and Robust Detection of Duplicate Videos in a Database
Efficient and Robust Detection of Duplicate Videos in a DatabaseEfficient and Robust Detection of Duplicate Videos in a Database
Efficient and Robust Detection of Duplicate Videos in a Databaserahulmonikasharma
 
Efficient and Robust Detection of Duplicate Videos in a Database
Efficient and Robust Detection of Duplicate Videos in a DatabaseEfficient and Robust Detection of Duplicate Videos in a Database
Efficient and Robust Detection of Duplicate Videos in a Databaserahulmonikasharma
 
Efficient and Robust Detection of Duplicate Videos in a Database
Efficient and Robust Detection of Duplicate Videos in a DatabaseEfficient and Robust Detection of Duplicate Videos in a Database
Efficient and Robust Detection of Duplicate Videos in a Databaserahulmonikasharma
 
Identify Defects in Gears Using Digital Image Processing
Identify Defects in Gears Using Digital Image ProcessingIdentify Defects in Gears Using Digital Image Processing
Identify Defects in Gears Using Digital Image ProcessingIJERD Editor
 
Color Detection & Segmentation based Invisible Cloak
Color Detection & Segmentation based Invisible CloakColor Detection & Segmentation based Invisible Cloak
Color Detection & Segmentation based Invisible CloakAviral Chaurasia
 
Write once on silicon
Write once on siliconWrite once on silicon
Write once on siliconSandip Ray
 
FACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDS
FACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDSFACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDS
FACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDSIRJET Journal
 
Building HD maps with dashcams
Building HD maps with dashcamsBuilding HD maps with dashcams
Building HD maps with dashcamsKousuke Kuzuoka
 
Conference research paper_target_tracking
Conference research paper_target_trackingConference research paper_target_tracking
Conference research paper_target_trackingpatrobadri
 
Questions On The Equation For Regression
Questions On The Equation For RegressionQuestions On The Equation For Regression
Questions On The Equation For RegressionTiffany Sandoval
 
Detection of a user-defined object in an image using feature extraction- Trai...
Detection of a user-defined object in an image using feature extraction- Trai...Detection of a user-defined object in an image using feature extraction- Trai...
Detection of a user-defined object in an image using feature extraction- Trai...IRJET Journal
 
Azure Industrial Iot Edge
Azure Industrial Iot EdgeAzure Industrial Iot Edge
Azure Industrial Iot EdgeRiccardo Zamana
 

Similar to Driving Assistant Solutions with Android (20)

IRJET - Face Recognition based Attendance System
IRJET -  	  Face Recognition based Attendance SystemIRJET -  	  Face Recognition based Attendance System
IRJET - Face Recognition based Attendance System
 
IRJET - A Research on Video Forgery Detection using Machine Learning
IRJET -  	  A Research on Video Forgery Detection using Machine LearningIRJET -  	  A Research on Video Forgery Detection using Machine Learning
IRJET - A Research on Video Forgery Detection using Machine Learning
 
Edge AI: Deep Learning techniques for Computer Vision applied to Embedded Sys...
Edge AI: Deep Learning techniques for Computer Vision applied to Embedded Sys...Edge AI: Deep Learning techniques for Computer Vision applied to Embedded Sys...
Edge AI: Deep Learning techniques for Computer Vision applied to Embedded Sys...
 
car number plate detection using matlab image & video processing
car number plate detection using matlab image & video processingcar number plate detection using matlab image & video processing
car number plate detection using matlab image & video processing
 
License Plate Recognition
License Plate RecognitionLicense Plate Recognition
License Plate Recognition
 
Easy path to machine learning
Easy path to machine learningEasy path to machine learning
Easy path to machine learning
 
Efficient and Robust Detection of Duplicate Videos in a Database
Efficient and Robust Detection of Duplicate Videos in a DatabaseEfficient and Robust Detection of Duplicate Videos in a Database
Efficient and Robust Detection of Duplicate Videos in a Database
 
Efficient and Robust Detection of Duplicate Videos in a Database
Efficient and Robust Detection of Duplicate Videos in a DatabaseEfficient and Robust Detection of Duplicate Videos in a Database
Efficient and Robust Detection of Duplicate Videos in a Database
 
Efficient and Robust Detection of Duplicate Videos in a Database
Efficient and Robust Detection of Duplicate Videos in a DatabaseEfficient and Robust Detection of Duplicate Videos in a Database
Efficient and Robust Detection of Duplicate Videos in a Database
 
Identify Defects in Gears Using Digital Image Processing
Identify Defects in Gears Using Digital Image ProcessingIdentify Defects in Gears Using Digital Image Processing
Identify Defects in Gears Using Digital Image Processing
 
Color Detection & Segmentation based Invisible Cloak
Color Detection & Segmentation based Invisible CloakColor Detection & Segmentation based Invisible Cloak
Color Detection & Segmentation based Invisible Cloak
 
Write once on silicon
Write once on siliconWrite once on silicon
Write once on silicon
 
FACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDS
FACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDSFACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDS
FACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDS
 
The road to green code
The road to green codeThe road to green code
The road to green code
 
Building HD maps with dashcams
Building HD maps with dashcamsBuilding HD maps with dashcams
Building HD maps with dashcams
 
Conference research paper_target_tracking
Conference research paper_target_trackingConference research paper_target_tracking
Conference research paper_target_tracking
 
Y U NO CRAFTSMAN
Y U NO CRAFTSMANY U NO CRAFTSMAN
Y U NO CRAFTSMAN
 
Questions On The Equation For Regression
Questions On The Equation For RegressionQuestions On The Equation For Regression
Questions On The Equation For Regression
 
Detection of a user-defined object in an image using feature extraction- Trai...
Detection of a user-defined object in an image using feature extraction- Trai...Detection of a user-defined object in an image using feature extraction- Trai...
Detection of a user-defined object in an image using feature extraction- Trai...
 
Azure Industrial Iot Edge
Azure Industrial Iot EdgeAzure Industrial Iot Edge
Azure Industrial Iot Edge
 

More from Giorgio Natili

Isomorphic Reactive Programming
Isomorphic Reactive ProgrammingIsomorphic Reactive Programming
Isomorphic Reactive ProgrammingGiorgio Natili
 
The Little Shop of TDD Horrors
The Little Shop of TDD HorrorsThe Little Shop of TDD Horrors
The Little Shop of TDD HorrorsGiorgio Natili
 
Android, getting started
Android, getting startedAndroid, getting started
Android, getting startedGiorgio Natili
 
Clear the UIViewController Mess
Clear the UIViewController MessClear the UIViewController Mess
Clear the UIViewController MessGiorgio Natili
 
The short path to ecma 6
The short path to ecma 6The short path to ecma 6
The short path to ecma 6Giorgio Natili
 
WebRTC communication and wearable devices
WebRTC communication and wearable devicesWebRTC communication and wearable devices
WebRTC communication and wearable devicesGiorgio Natili
 
Multithreading development with workers
Multithreading development with workersMultithreading development with workers
Multithreading development with workersGiorgio Natili
 
Undoable architectures
Undoable architecturesUndoable architectures
Undoable architecturesGiorgio Natili
 
WebRTC and Mobile Integration
WebRTC and Mobile IntegrationWebRTC and Mobile Integration
WebRTC and Mobile IntegrationGiorgio Natili
 
Develop, test and debug cross platforms apps with PhoneGap
Develop, test and debug cross platforms apps with PhoneGapDevelop, test and debug cross platforms apps with PhoneGap
Develop, test and debug cross platforms apps with PhoneGapGiorgio Natili
 

More from Giorgio Natili (20)

Isomorphic Reactive Programming
Isomorphic Reactive ProgrammingIsomorphic Reactive Programming
Isomorphic Reactive Programming
 
Service worker API
Service worker APIService worker API
Service worker API
 
The Little Shop of TDD Horrors
The Little Shop of TDD HorrorsThe Little Shop of TDD Horrors
The Little Shop of TDD Horrors
 
I beacon mobile_tea
I beacon mobile_teaI beacon mobile_tea
I beacon mobile_tea
 
Android, getting started
Android, getting startedAndroid, getting started
Android, getting started
 
Clear the UIViewController Mess
Clear the UIViewController MessClear the UIViewController Mess
Clear the UIViewController Mess
 
Big data and mobile
Big data and mobileBig data and mobile
Big data and mobile
 
The short path to ecma 6
The short path to ecma 6The short path to ecma 6
The short path to ecma 6
 
Jasmine 2.0
Jasmine 2.0Jasmine 2.0
Jasmine 2.0
 
Harmonik
HarmonikHarmonik
Harmonik
 
Mobile raspberry pi
Mobile raspberry piMobile raspberry pi
Mobile raspberry pi
 
WebRTC communication and wearable devices
WebRTC communication and wearable devicesWebRTC communication and wearable devices
WebRTC communication and wearable devices
 
Multithreading development with workers
Multithreading development with workersMultithreading development with workers
Multithreading development with workers
 
Ecma6 in 30 minutes
Ecma6 in 30 minutesEcma6 in 30 minutes
Ecma6 in 30 minutes
 
TDD and PhoneGap
TDD and PhoneGapTDD and PhoneGap
TDD and PhoneGap
 
Undoable architectures
Undoable architecturesUndoable architectures
Undoable architectures
 
Test first!
Test first!Test first!
Test first!
 
WebRTC and Mobile Integration
WebRTC and Mobile IntegrationWebRTC and Mobile Integration
WebRTC and Mobile Integration
 
Develop, test and debug cross platforms apps with PhoneGap
Develop, test and debug cross platforms apps with PhoneGapDevelop, test and debug cross platforms apps with PhoneGap
Develop, test and debug cross platforms apps with PhoneGap
 
Test first
Test firstTest first
Test first
 

Recently uploaded

Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?Watsoo Telematics
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutionsmonugehlot87
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 

Recently uploaded (20)

Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutions
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 

Driving Assistant Solutions with Android