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
fc71745c
Commit
fc71745c
authored
May 22, 2012
by
Alexander Smorkalov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cv::Exception handling added. Multithreading bug fixed.
parent
3c724002
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
120 additions
and
19 deletions
+120
-19
DetectionBaseTracker.cpp
samples/android/face-detection/jni/DetectionBaseTracker.cpp
+103
-11
DetectionBaseTracker.h
samples/android/face-detection/jni/DetectionBaseTracker.h
+8
-0
DetectionBaseTracker.java
...ction/src/org/opencv/samples/fd/DetectionBaseTracker.java
+7
-2
FdView.java
...roid/face-detection/src/org/opencv/samples/fd/FdView.java
+2
-6
No files found.
samples/android/face-detection/jni/DetectionBaseTracker.cpp
View file @
fc71745c
...
...
@@ -5,6 +5,11 @@
#include <string>
#include <vector>
#include <android/log.h>
#define LOG_TAG "FaceDetection/DetectionBasedTracker"
#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__))
using
namespace
std
;
using
namespace
cv
;
...
...
@@ -18,36 +23,122 @@ inline void vector_Rect_to_Mat(vector<Rect>& v_rect, Mat& mat)
JNIEXPORT
jlong
JNICALL
Java_org_opencv_samples_fd_DetectionBaseTracker_nativeCreateObject
(
JNIEnv
*
jenv
,
jclass
jobj
,
jstring
jFileName
,
jint
faceSize
)
{
const
char
*
jnamestr
=
jenv
->
GetStringUTFChars
(
jFileName
,
NULL
);
const
char
*
jnamestr
=
jenv
->
GetStringUTFChars
(
jFileName
,
NULL
);
string
stdFileName
(
jnamestr
);
DetectionBasedTracker
::
Parameters
DetectorParams
;
if
(
faceSize
>
0
)
DetectorParams
.
minObjectSize
=
faceSize
;
return
(
jlong
)
new
DetectionBasedTracker
(
stdFileName
,
DetectorParams
);
jlong
result
=
0
;
try
{
DetectionBasedTracker
::
Parameters
DetectorParams
;
if
(
faceSize
>
0
)
DetectorParams
.
minObjectSize
=
faceSize
;
result
=
(
jlong
)
new
DetectionBasedTracker
(
stdFileName
,
DetectorParams
);
}
catch
(
cv
::
Exception
e
)
{
LOGD
(
"nativeCreateObject catched cv::Exception: %s"
,
e
.
what
());
jclass
je
=
jenv
->
FindClass
(
"org/opencv/core/CvException"
);
if
(
!
je
)
je
=
jenv
->
FindClass
(
"java/lang/Exception"
);
jenv
->
ThrowNew
(
je
,
e
.
what
());
}
return
result
;
}
JNIEXPORT
void
JNICALL
Java_org_opencv_samples_fd_DetectionBaseTracker_nativeDestroyObject
(
JNIEnv
*
jenv
,
jclass
jobj
,
jlong
thiz
)
{
delete
(
DetectionBasedTracker
*
)
thiz
;
try
{
((
DetectionBasedTracker
*
)
thiz
)
->
stop
();
delete
(
DetectionBasedTracker
*
)
thiz
;
}
catch
(
cv
::
Exception
e
)
{
LOGD
(
"nativeestroyObject catched cv::Exception: %s"
,
e
.
what
());
jclass
je
=
jenv
->
FindClass
(
"org/opencv/core/CvException"
);
if
(
!
je
)
je
=
jenv
->
FindClass
(
"java/lang/Exception"
);
jenv
->
ThrowNew
(
je
,
e
.
what
());
}
}
JNIEXPORT
void
JNICALL
Java_org_opencv_samples_fd_DetectionBaseTracker_nativeStart
(
JNIEnv
*
jenv
,
jclass
jobj
,
jlong
thiz
)
{
((
DetectionBasedTracker
*
)
thiz
)
->
run
();
try
{
((
DetectionBasedTracker
*
)
thiz
)
->
run
();
}
catch
(
cv
::
Exception
e
)
{
LOGD
(
"nativeStart catched cv::Exception: %s"
,
e
.
what
());
jclass
je
=
jenv
->
FindClass
(
"org/opencv/core/CvException"
);
if
(
!
je
)
je
=
jenv
->
FindClass
(
"java/lang/Exception"
);
jenv
->
ThrowNew
(
je
,
e
.
what
());
}
}
JNIEXPORT
void
JNICALL
Java_org_opencv_samples_fd_DetectionBaseTracker_nativeStop
(
JNIEnv
*
jenv
,
jclass
jobj
,
jlong
thiz
)
{
((
DetectionBasedTracker
*
)
thiz
)
->
stop
();
try
{
((
DetectionBasedTracker
*
)
thiz
)
->
stop
();
}
catch
(
cv
::
Exception
e
)
{
LOGD
(
"nativeStop catched cv::Exception: %s"
,
e
.
what
());
jclass
je
=
jenv
->
FindClass
(
"org/opencv/core/CvException"
);
if
(
!
je
)
je
=
jenv
->
FindClass
(
"java/lang/Exception"
);
jenv
->
ThrowNew
(
je
,
e
.
what
());
}
}
JNIEXPORT
void
JNICALL
Java_org_opencv_samples_fd_DetectionBaseTracker_nativeSetFaceSize
(
JNIEnv
*
jenv
,
jclass
jobj
,
jlong
thiz
,
jint
faceSize
)
{
try
{
if
(
faceSize
>
0
)
{
DetectionBasedTracker
::
Parameters
DetectorParams
=
\
((
DetectionBasedTracker
*
)
thiz
)
->
getParameters
();
DetectorParams
.
minObjectSize
=
faceSize
;
((
DetectionBasedTracker
*
)
thiz
)
->
setParameters
(
DetectorParams
);
}
}
catch
(
cv
::
Exception
e
)
{
LOGD
(
"nativeStop catched cv::Exception: %s"
,
e
.
what
());
jclass
je
=
jenv
->
FindClass
(
"org/opencv/core/CvException"
);
if
(
!
je
)
je
=
jenv
->
FindClass
(
"java/lang/Exception"
);
jenv
->
ThrowNew
(
je
,
e
.
what
());
}
}
JNIEXPORT
void
JNICALL
Java_org_opencv_samples_fd_DetectionBaseTracker_nativeDetect
(
JNIEnv
*
jenv
,
jclass
jobj
,
jlong
thiz
,
jlong
imageGray
,
jlong
faces
)
{
((
DetectionBasedTracker
*
)
thiz
)
->
process
(
*
((
Mat
*
)
imageGray
));
((
DetectionBasedTracker
*
)
thiz
)
->
getObjects
(
RectFaces
);
vector_Rect_to_Mat
(
RectFaces
,
*
((
Mat
*
)
faces
));
try
{
((
DetectionBasedTracker
*
)
thiz
)
->
process
(
*
((
Mat
*
)
imageGray
));
((
DetectionBasedTracker
*
)
thiz
)
->
getObjects
(
RectFaces
);
vector_Rect_to_Mat
(
RectFaces
,
*
((
Mat
*
)
faces
));
}
catch
(
cv
::
Exception
e
)
{
LOGD
(
"nativeCreateObject catched cv::Exception: %s"
,
e
.
what
());
jclass
je
=
jenv
->
FindClass
(
"org/opencv/core/CvException"
);
if
(
!
je
)
je
=
jenv
->
FindClass
(
"java/lang/Exception"
);
jenv
->
ThrowNew
(
je
,
e
.
what
());
}
}
\ No newline at end of file
samples/android/face-detection/jni/DetectionBaseTracker.h
View file @
fc71745c
...
...
@@ -39,6 +39,14 @@ JNIEXPORT void JNICALL Java_org_opencv_samples_fd_DetectionBaseTracker_nativeSta
JNIEXPORT
void
JNICALL
Java_org_opencv_samples_fd_DetectionBaseTracker_nativeStop
(
JNIEnv
*
,
jclass
,
jlong
);
/*
* Class: org_opencv_samples_fd_DetectionBaseTracker
* Method: nativeSetFaceSize
* Signature: (JI)V
*/
JNIEXPORT
void
JNICALL
Java_org_opencv_samples_fd_DetectionBaseTracker_nativeSetFaceSize
(
JNIEnv
*
,
jclass
,
jlong
,
jint
);
/*
* Class: org_opencv_samples_fd_DetectionBaseTracker
* Method: nativeDetect
...
...
samples/android/face-detection/src/org/opencv/samples/fd/DetectionBaseTracker.java
View file @
fc71745c
...
...
@@ -20,6 +20,11 @@ public class DetectionBaseTracker
nativeStop
(
mNativeObj
);
}
public
void
setMinFaceSize
(
int
faceSize
)
{
nativeSetFaceSize
(
mNativeObj
,
faceSize
);
}
public
void
detect
(
Mat
imageGray
,
MatOfRect
faces
)
{
nativeDetect
(
mNativeObj
,
imageGray
.
getNativeObjAddr
(),
faces
.
getNativeObjAddr
());
...
...
@@ -27,17 +32,17 @@ public class DetectionBaseTracker
public
void
release
()
{
nativeStop
(
mNativeObj
);
nativeDestroyObject
(
mNativeObj
);
mNativeObj
=
0
;
}
protected
long
mNativeObj
;
protected
long
mNativeObj
=
0
;
protected
static
native
long
nativeCreateObject
(
String
filename
,
int
faceSize
);
protected
static
native
void
nativeDestroyObject
(
long
thiz
);
protected
static
native
void
nativeStart
(
long
thiz
);
protected
static
native
void
nativeStop
(
long
thiz
);
protected
static
native
void
nativeSetFaceSize
(
long
thiz
,
int
faceSize
);
protected
static
native
void
nativeDetect
(
long
thiz
,
long
inputImage
,
long
resultMat
);
static
...
...
samples/android/face-detection/src/org/opencv/samples/fd/FdView.java
View file @
fc71745c
...
...
@@ -43,8 +43,7 @@ class FdView extends SampleCvViewBase {
{
mFaceSize
=
Math
.
round
(
height
*
faceSize
);
}
mTracker
.
release
();
mTracker
=
new
DetectionBaseTracker
(
mCascadeFile
.
getAbsolutePath
(),
mFaceSize
);
mTracker
.
setMinFaceSize
(
mFaceSize
);
}
public
void
setDtetectorType
(
int
type
)
...
...
@@ -120,17 +119,14 @@ class FdView extends SampleCvViewBase {
if
(
mDetectorType
==
CASCADE_DETECTOR
)
{
if
(
mCascade
!=
null
)
{
if
(
mCascade
!=
null
)
mCascade
.
detectMultiScale
(
mGray
,
faces
,
1.1
,
2
,
2
// TODO: objdetect.CV_HAAR_SCALE_IMAGE
,
new
Size
(
mFaceSize
,
mFaceSize
),
new
Size
());
}
}
else
if
(
mDetectorType
==
DBT_DETECTOR
)
{
if
(
mTracker
!=
null
)
{
mTracker
.
detect
(
mGray
,
faces
);
}
}
else
{
...
...
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