Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
9d593e77
Commit
9d593e77
authored
Mar 07, 2017
by
Alexander Alekhin
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #8324 from sturkmen72:update_objectDetection_cpp
parents
6fe1898a
50bda8ad
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
16 additions
and
106 deletions
+16
-106
cascade_classifier.markdown
.../objdetect/cascade_classifier/cascade_classifier.markdown
+2
-4
objectDetection.cpp
...les/cpp/tutorial_code/objectDetection/objectDetection.cpp
+14
-4
objectDetection2.cpp
...es/cpp/tutorial_code/objectDetection/objectDetection2.cpp
+0
-98
No files found.
doc/tutorials/objdetect/cascade_classifier/cascade_classifier.markdown
View file @
9d593e77
...
...
@@ -19,8 +19,6 @@ Code
This tutorial code's is shown lines below. You can also download it from
[
here
](
https://github.com/opencv/opencv/tree/master/samples/cpp/tutorial_code/objectDetection/objectDetection.cpp
)
. The second version (using LBP for face detection) can be
[
found
here](https://github.com/opencv/opencv/tree/master/samples/cpp/tutorial_code/objectDetection/objectDetection2.cpp)
@include samples/cpp/tutorial_code/objectDetection/objectDetection.cpp
Explanation
...
...
@@ -34,8 +32,8 @@ Result

Remember to copy the
files *haarcascade_frontalface_alt.xml* and
*haarcascade_eye_tree_eyeglasses.xml*
in your current directory
. They are located in
Be sure the program will find the path of
files *haarcascade_frontalface_alt.xml* and
*haarcascade_eye_tree_eyeglasses.xml*. They are located in
*opencv/data/haarcascades*
-# This is the result of using the file
*lbpcascade_frontalface.xml*
(LBP trained) for the face
...
...
samples/cpp/tutorial_code/objectDetection/objectDetection.cpp
View file @
9d593e77
...
...
@@ -13,15 +13,25 @@ using namespace cv;
void
detectAndDisplay
(
Mat
frame
);
/** Global variables */
String
face_cascade_name
=
"haarcascade_frontalface_alt.xml"
;
String
eyes_cascade_name
=
"haarcascade_eye_tree_eyeglasses.xml"
;
String
face_cascade_name
,
eyes_cascade_name
;
CascadeClassifier
face_cascade
;
CascadeClassifier
eyes_cascade
;
String
window_name
=
"Capture - Face detection"
;
/** @function main */
int
main
(
void
)
int
main
(
int
argc
,
const
char
**
argv
)
{
CommandLineParser
parser
(
argc
,
argv
,
"{help h||}"
"{face_cascade|../../data/haarcascades/haarcascade_frontalface_alt.xml|}"
"{eyes_cascade|../../data/haarcascades/haarcascade_eye_tree_eyeglasses.xml|}"
);
cout
<<
"
\n
This program demonstrates using the cv::CascadeClassifier class to detect objects (Face + eyes) in a video stream.
\n
"
"You can use Haar or LBP features.
\n\n
"
;
parser
.
printMessage
();
face_cascade_name
=
parser
.
get
<
string
>
(
"face_cascade"
);
eyes_cascade_name
=
parser
.
get
<
string
>
(
"eyes_cascade"
);
VideoCapture
capture
;
Mat
frame
;
...
...
@@ -30,7 +40,7 @@ int main( void )
if
(
!
eyes_cascade
.
load
(
eyes_cascade_name
)
){
printf
(
"--(!)Error loading eyes cascade
\n
"
);
return
-
1
;
};
//-- 2. Read the video stream
capture
.
open
(
-
1
);
capture
.
open
(
0
);
if
(
!
capture
.
isOpened
()
)
{
printf
(
"--(!)Error opening video capture
\n
"
);
return
-
1
;
}
while
(
capture
.
read
(
frame
)
)
...
...
samples/cpp/tutorial_code/objectDetection/objectDetection2.cpp
deleted
100644 → 0
View file @
6fe1898a
/**
* @file objectDetection2.cpp
* @author A. Huaman ( based in the classic facedetect.cpp in samples/c )
* @brief A simplified version of facedetect.cpp, show how to load a cascade classifier and how to find objects (Face + eyes) in a video stream - Using LBP here
*/
#include "opencv2/objdetect.hpp"
#include "opencv2/videoio.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
#include <stdio.h>
using
namespace
std
;
using
namespace
cv
;
/** Function Headers */
void
detectAndDisplay
(
Mat
frame
);
/** Global variables */
String
face_cascade_name
=
"lbpcascade_frontalface.xml"
;
String
eyes_cascade_name
=
"haarcascade_eye_tree_eyeglasses.xml"
;
CascadeClassifier
face_cascade
;
CascadeClassifier
eyes_cascade
;
String
window_name
=
"Capture - Face detection"
;
/**
* @function main
*/
int
main
(
void
)
{
VideoCapture
capture
;
Mat
frame
;
//-- 1. Load the cascade
if
(
!
face_cascade
.
load
(
face_cascade_name
)
){
printf
(
"--(!)Error loading face cascade
\n
"
);
return
-
1
;
};
if
(
!
eyes_cascade
.
load
(
eyes_cascade_name
)
){
printf
(
"--(!)Error loading eyes cascade
\n
"
);
return
-
1
;
};
//-- 2. Read the video stream
capture
.
open
(
-
1
);
if
(
!
capture
.
isOpened
()
)
{
printf
(
"--(!)Error opening video capture
\n
"
);
return
-
1
;
}
while
(
capture
.
read
(
frame
)
)
{
if
(
frame
.
empty
()
)
{
printf
(
" --(!) No captured frame -- Break!"
);
break
;
}
//-- 3. Apply the classifier to the frame
detectAndDisplay
(
frame
);
//-- bail out if escape was pressed
char
c
=
(
char
)
waitKey
(
10
);
if
(
c
==
27
)
{
break
;
}
}
return
0
;
}
/**
* @function detectAndDisplay
*/
void
detectAndDisplay
(
Mat
frame
)
{
std
::
vector
<
Rect
>
faces
;
Mat
frame_gray
;
cvtColor
(
frame
,
frame_gray
,
COLOR_BGR2GRAY
);
equalizeHist
(
frame_gray
,
frame_gray
);
//-- Detect faces
face_cascade
.
detectMultiScale
(
frame_gray
,
faces
,
1.1
,
2
,
0
,
Size
(
80
,
80
)
);
for
(
size_t
i
=
0
;
i
<
faces
.
size
();
i
++
)
{
Mat
faceROI
=
frame_gray
(
faces
[
i
]
);
std
::
vector
<
Rect
>
eyes
;
//-- In each face, detect eyes
eyes_cascade
.
detectMultiScale
(
faceROI
,
eyes
,
1.1
,
2
,
0
|
CASCADE_SCALE_IMAGE
,
Size
(
30
,
30
)
);
if
(
eyes
.
size
()
==
2
)
{
//-- Draw the face
Point
center
(
faces
[
i
].
x
+
faces
[
i
].
width
/
2
,
faces
[
i
].
y
+
faces
[
i
].
height
/
2
);
ellipse
(
frame
,
center
,
Size
(
faces
[
i
].
width
/
2
,
faces
[
i
].
height
/
2
),
0
,
0
,
360
,
Scalar
(
255
,
0
,
0
),
2
,
8
,
0
);
for
(
size_t
j
=
0
;
j
<
eyes
.
size
();
j
++
)
{
//-- Draw the eyes
Point
eye_center
(
faces
[
i
].
x
+
eyes
[
j
].
x
+
eyes
[
j
].
width
/
2
,
faces
[
i
].
y
+
eyes
[
j
].
y
+
eyes
[
j
].
height
/
2
);
int
radius
=
cvRound
(
(
eyes
[
j
].
width
+
eyes
[
j
].
height
)
*
0.25
);
circle
(
frame
,
eye_center
,
radius
,
Scalar
(
255
,
0
,
255
),
3
,
8
,
0
);
}
}
}
//-- Show what you got
imshow
(
window_name
,
frame
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment