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
42a4ed6e
Commit
42a4ed6e
authored
Aug 24, 2012
by
Andrey Kamaev
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'android_camera'
parents
1b5903a7
ba862ffd
Show whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
233 additions
and
325 deletions
+233
-325
detection_based_tracker.cpp
modules/contrib/src/detection_based_tracker.cpp
+23
-21
cap_android.cpp
modules/highgui/src/cap_android.cpp
+34
-35
SampleCvViewBase.java
...zle/src/org/opencv/samples/puzzle15/SampleCvViewBase.java
+2
-3
puzzle15Activity.java
...zle/src/org/opencv/samples/puzzle15/puzzle15Activity.java
+11
-22
puzzle15View.java
...-puzzle/src/org/opencv/samples/puzzle15/puzzle15View.java
+17
-7
ColorBlobDetectionActivity.java
...v/samples/colorblobdetect/ColorBlobDetectionActivity.java
+11
-21
ColorBlobDetectionView.java
...pencv/samples/colorblobdetect/ColorBlobDetectionView.java
+5
-11
ColorBlobDetector.java
...org/opencv/samples/colorblobdetect/ColorBlobDetector.java
+11
-23
SampleCvViewBase.java
.../org/opencv/samples/colorblobdetect/SampleCvViewBase.java
+1
-2
Android.mk
samples/android/face-detection/jni/Android.mk
+0
-0
DetectionBasedTracker_jni.cpp
.../android/face-detection/jni/DetectionBasedTracker_jni.cpp
+8
-0
DetectionBasedTracker_jni.h
...es/android/face-detection/jni/DetectionBasedTracker_jni.h
+0
-0
DetectionBasedTracker.java
...tion/src/org/opencv/samples/fd/DetectionBasedTracker.java
+7
-14
FdActivity.java
.../face-detection/src/org/opencv/samples/fd/FdActivity.java
+11
-25
FdView.java
...roid/face-detection/src/org/opencv/samples/fd/FdView.java
+13
-24
SampleCvViewBase.java
...detection/src/org/opencv/samples/fd/SampleCvViewBase.java
+2
-2
ImageManipulationsActivity.java
...amples/imagemanipulations/ImageManipulationsActivity.java
+8
-18
ImageManipulationsView.java
...cv/samples/imagemanipulations/ImageManipulationsView.java
+0
-0
SampleCvViewBase.java
...g/opencv/samples/imagemanipulations/SampleCvViewBase.java
+1
-2
Sample0Base.java
...dcamera/src/org/opencv/samples/tutorial0/Sample0Base.java
+0
-0
Sample0View.java
...dcamera/src/org/opencv/samples/tutorial0/Sample0View.java
+2
-1
SampleViewBase.java
...mera/src/org/opencv/samples/tutorial0/SampleViewBase.java
+8
-6
Sample1Java.java
...dopencv/src/org/opencv/samples/tutorial1/Sample1Java.java
+9
-18
Sample1View.java
...dopencv/src/org/opencv/samples/tutorial1/Sample1View.java
+0
-0
SampleViewBase.java
...encv/src/org/opencv/samples/tutorial1/SampleViewBase.java
+8
-5
Sample2NativeCamera.java
...src/org/opencv/samples/tutorial2/Sample2NativeCamera.java
+8
-17
Sample2View.java
...vcamera/src/org/opencv/samples/tutorial2/Sample2View.java
+0
-0
SampleCvViewBase.java
...ra/src/org/opencv/samples/tutorial2/SampleCvViewBase.java
+1
-2
Sample3Native.java
...ative/src/org/opencv/samples/tutorial3/Sample3Native.java
+8
-17
Sample3View.java
...-native/src/org/opencv/samples/tutorial3/Sample3View.java
+0
-0
SampleViewBase.java
...tive/src/org/opencv/samples/tutorial3/SampleViewBase.java
+8
-5
Sample4Mixed.java
...-mixed/src/org/opencv/samples/tutorial4/Sample4Mixed.java
+8
-19
Sample4View.java
...4-mixed/src/org/opencv/samples/tutorial4/Sample4View.java
+0
-0
SampleViewBase.java
...ixed/src/org/opencv/samples/tutorial4/SampleViewBase.java
+8
-5
No files found.
modules/contrib/src/detection_based_tracker.cpp
View file @
42a4ed6e
...
...
@@ -39,7 +39,7 @@ using namespace std;
static
inline
cv
::
Point2f
centerRect
(
const
cv
::
Rect
&
r
)
{
return
cv
::
Point2f
(
r
.
x
+
((
float
)
r
.
width
)
/
2
,
r
.
y
+
((
float
)
r
.
height
)
/
2
);
}
;
}
static
inline
cv
::
Rect
scale_rect
(
const
cv
::
Rect
&
r
,
float
scale
)
{
...
...
@@ -50,7 +50,7 @@ static inline cv::Rect scale_rect(const cv::Rect& r, float scale)
int
y
=
cvRound
(
m
.
y
-
height
/
2
);
return
cv
::
Rect
(
x
,
y
,
cvRound
(
width
),
cvRound
(
height
));
}
;
}
namespace
cv
{
...
...
@@ -66,6 +66,7 @@ class cv::DetectionBasedTracker::SeparateDetectionWork
bool
run
();
void
stop
();
void
resetTracking
();
inline
bool
isWorking
()
{
return
(
stateThread
==
STATE_THREAD_WORKING_SLEEPING
)
||
(
stateThread
==
STATE_THREAD_WORKING_WITH_IMAGE
);
...
...
@@ -298,8 +299,8 @@ void cv::DetectionBasedTracker::SeparateDetectionWork::workcycleObjectDetector()
break
;
}
int64
t2_detect
=
getTickCount
();
int64
dt_detect
=
t2_detect
-
t1_detect
;
int64
t2_detect
=
getTickCount
();
int64
dt_detect
=
t2_detect
-
t1_detect
;
double
dt_detect_ms
=
((
double
)
dt_detect
)
/
freq
*
1000.0
;
LOGI
(
"DetectionBasedTracker::SeparateDetectionWork::workcycleObjectDetector() --- objects num==%d, t_ms=%.4f"
,
(
int
)
objects
.
size
(),
dt_detect_ms
);
...
...
@@ -378,26 +379,26 @@ bool cv::DetectionBasedTracker::SeparateDetectionWork::communicateWithDetectingT
{
static
double
freq
=
getTickFrequency
();
bool
shouldCommunicateWithDetectingThread
=
(
stateThread
==
STATE_THREAD_WORKING_SLEEPING
);
bool
shouldCommunicateWithDetectingThread
=
(
stateThread
==
STATE_THREAD_WORKING_SLEEPING
);
LOGD
(
"DetectionBasedTracker::SeparateDetectionWork::communicateWithDetectingThread: shouldCommunicateWithDetectingThread=%d"
,
(
shouldCommunicateWithDetectingThread
?
1
:
0
));
if
(
!
shouldCommunicateWithDetectingThread
)
{
return
false
;
}
bool
shouldHandleResult
=
false
;
bool
shouldHandleResult
=
false
;
pthread_mutex_lock
(
&
mutex
);
if
(
isObjectDetectingReady
)
{
shouldHandleResult
=
true
;
rectsWhereRegions
=
resultDetect
;
rectsWhereRegions
=
resultDetect
;
isObjectDetectingReady
=
false
;
double
lastBigDetectionDuration
=
1000.0
*
(((
double
)(
getTickCount
()
-
timeWhenDetectingThreadStartedWork
))
/
freq
);
double
lastBigDetectionDuration
=
1000.0
*
(((
double
)(
getTickCount
()
-
timeWhenDetectingThreadStartedWork
))
/
freq
);
LOGD
(
"DetectionBasedTracker::SeparateDetectionWork::communicateWithDetectingThread: lastBigDetectionDuration=%f ms"
,
(
double
)
lastBigDetectionDuration
);
}
bool
shouldSendNewDataToWorkThread
=
true
;
bool
shouldSendNewDataToWorkThread
=
true
;
if
(
timeWhenDetectingThreadStartedWork
>
0
)
{
double
time_from_previous_launch_in_ms
=
1000.0
*
(((
double
)(
getTickCount
()
-
timeWhenDetectingThreadStartedWork
))
/
freq
);
//the same formula as for lastBigDetectionDuration
shouldSendNewDataToWorkThread
=
(
time_from_previous_launch_in_ms
>=
detectionBasedTracker
.
parameters
.
minDetectionPeriod
);
...
...
@@ -496,24 +497,24 @@ void DetectionBasedTracker::process(const Mat& imageGray)
LOGD
(
"DetectionBasedTracker::process: get _rectsWhereRegions were got from resultDetect"
);
}
else
{
LOGD
(
"DetectionBasedTracker::process: get _rectsWhereRegions from previous positions"
);
for
(
size_t
i
=
0
;
i
<
trackedObjects
.
size
();
i
++
)
{
int
n
=
trackedObjects
[
i
].
lastPositions
.
size
();
for
(
size_t
i
=
0
;
i
<
trackedObjects
.
size
();
i
++
)
{
int
n
=
trackedObjects
[
i
].
lastPositions
.
size
();
CV_Assert
(
n
>
0
);
Rect
r
=
trackedObjects
[
i
].
lastPositions
[
n
-
1
];
if
(
r
.
area
()
==
0
)
{
Rect
r
=
trackedObjects
[
i
].
lastPositions
[
n
-
1
];
if
(
r
.
area
()
==
0
)
{
LOGE
(
"DetectionBasedTracker::process: ERROR: ATTENTION: strange algorithm's behavior: trackedObjects[i].rect() is empty"
);
continue
;
}
//correction by speed of rectangle
if
(
n
>
1
)
{
Point2f
center
=
centerRect
(
r
);
Point2f
center_prev
=
centerRect
(
trackedObjects
[
i
].
lastPositions
[
n
-
2
]);
Point2f
shift
=
(
center
-
center_prev
)
*
innerParameters
.
coeffObjectSpeedUsingInPrediction
;
Point2f
center
=
centerRect
(
r
);
Point2f
center_prev
=
centerRect
(
trackedObjects
[
i
].
lastPositions
[
n
-
2
]);
Point2f
shift
=
(
center
-
center_prev
)
*
innerParameters
.
coeffObjectSpeedUsingInPrediction
;
r
.
x
+=
cvRound
(
shift
.
x
);
r
.
y
+=
cvRound
(
shift
.
y
);
r
.
x
+=
cvRound
(
shift
.
x
);
r
.
y
+=
cvRound
(
shift
.
y
);
}
...
...
@@ -526,7 +527,7 @@ void DetectionBasedTracker::process(const Mat& imageGray)
LOGD
(
"DetectionBasedTracker::process: rectsWhereRegions.size()=%d"
,
(
int
)
rectsWhereRegions
.
size
());
for
(
size_t
i
=
0
;
i
<
rectsWhereRegions
.
size
();
i
++
)
{
Rect
r
=
rectsWhereRegions
[
i
];
Rect
r
=
rectsWhereRegions
[
i
];
detectInRegion
(
imageDetect
,
r
,
detectedObjectsInRegions
);
}
...
...
@@ -799,8 +800,9 @@ Rect cv::DetectionBasedTracker::calcTrackedObjectPositionToShow(int i) const
void
cv
::
DetectionBasedTracker
::
detectInRegion
(
const
Mat
&
img
,
const
Rect
&
r
,
vector
<
Rect
>&
detectedObjectsInRegions
)
{
Rect
r0
(
Point
(),
img
.
size
());
Rect
r1
=
scale_rect
(
r
,
innerParameters
.
coeffTrackingWindowSize
);
r1
=
r1
&
r0
;
Rect
r1
=
scale_rect
(
r
,
innerParameters
.
coeffTrackingWindowSize
);
r1
=
r1
&
r0
;
if
(
(
r1
.
width
<=
0
)
||
(
r1
.
height
<=
0
)
)
{
LOGD
(
"DetectionBasedTracker::detectInRegion: Empty intersection"
);
return
;
...
...
modules/highgui/src/cap_android.cpp
View file @
42a4ed6e
...
...
@@ -48,12 +48,15 @@
#include <android/log.h>
#include <camera_activity.hpp>
#if !defined(LOGD) && !defined(LOGI) && !defined(LOGE)
//#if !defined(LOGD) && !defined(LOGI) && !defined(LOGE)
#undef LOGD
#undef LOGE
#undef LOGI
#define LOG_TAG "CV_CAP"
#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__))
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__))
#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__))
#endif
//
#endif
class
HighguiAndroidCameraActivity
;
...
...
@@ -86,8 +89,8 @@ protected:
//raw from camera
int
m_width
;
int
m_height
;
unsigned
char
*
m_frameYUV420
;
unsigned
char
*
m_frameYUV420next
;
cv
::
Mat
m_frameYUV420
;
cv
::
Mat
m_frameYUV420next
;
enum
YUVformat
{
...
...
@@ -189,8 +192,8 @@ CvCapture_Android::CvCapture_Android(int cameraId)
m_height
=
0
;
m_activity
=
0
;
m_isOpened
=
false
;
m_frameYUV420
=
0
;
m_frameYUV420next
=
0
;
//
m_frameYUV420 = 0;
//
m_frameYUV420next = 0;
m_hasGray
=
false
;
m_hasColor
=
false
;
m_dataState
=
CVCAPTURE_ANDROID_STATE_NO_FRAME
;
...
...
@@ -231,15 +234,14 @@ CvCapture_Android::~CvCapture_Android()
{
((
HighguiAndroidCameraActivity
*
)
m_activity
)
->
LogFramesRate
();
pthread_mutex_lock
(
&
m_nextFrameMutex
);
unsigned
char
*
tmp1
=
m_frameYUV420
;
unsigned
char
*
tmp2
=
m_frameYUV420next
;
m_frameYUV420
=
0
;
m_frameYUV420next
=
0
;
delete
tmp1
;
delete
tmp2
;
//
unsigned char *tmp1=m_frameYUV420;
//
unsigned char *tmp2=m_frameYUV420next;
//
m_frameYUV420 = 0;
//
m_frameYUV420next = 0;
//
delete tmp1;
//
delete tmp2;
m_dataState
=
CVCAPTURE_ANDROID_STATE_NO_FRAME
;
pthread_cond_broadcast
(
&
m_nextFrameCond
);
...
...
@@ -355,17 +357,17 @@ bool CvCapture_Android::grabFrame()
m_dataState
=
CVCAPTURE_ANDROID_STATE_NO_FRAME
;
//we will wait new frame
}
if
(
m_dataState
!=
CVCAPTURE_ANDROID_STATE_HAS_NEW_FRAME_UNGRABBED
)
{
if
(
m_dataState
!=
CVCAPTURE_ANDROID_STATE_HAS_NEW_FRAME_UNGRABBED
)
{
m_waitingNextFrame
=
true
;
pthread_cond_wait
(
&
m_nextFrameCond
,
&
m_nextFrameMutex
);
}
if
(
m_dataState
==
CVCAPTURE_ANDROID_STATE_HAS_NEW_FRAME_UNGRABBED
)
{
if
(
m_dataState
==
CVCAPTURE_ANDROID_STATE_HAS_NEW_FRAME_UNGRABBED
)
{
//LOGD("CvCapture_Android::grabFrame: get new frame");
//swap current and new frames
unsigned
char
*
tmp
=
m_frameYUV420
;
m_frameYUV420
=
m_frameYUV420next
;
m_frameYUV420next
=
tmp
;
cv
::
swap
(
m_frameYUV420
,
m_frameYUV420next
);
//discard cached frames
m_hasGray
=
false
;
...
...
@@ -393,7 +395,8 @@ IplImage* CvCapture_Android::retrieveFrame( int outputType )
{
IplImage
*
image
=
NULL
;
unsigned
char
*
current_frameYUV420
=
m_frameYUV420
;
cv
::
Mat
m_frameYUV420_ref
=
m_frameYUV420
;
unsigned
char
*
current_frameYUV420
=
m_frameYUV420_ref
.
ptr
();
//Attention! all the operations in this function below should occupy less time than the period between two frames from camera
if
(
NULL
!=
current_frameYUV420
)
{
...
...
@@ -456,19 +459,10 @@ void CvCapture_Android::setFrame(const void* buffer, int bufferSize)
prepareCacheForYUV
(
width
,
height
);
//copy data
memcpy
(
m_frameYUV420next
,
buffer
,
bufferSize
);
//LOGD("CvCapture_Android::setFrame -- memcpy is done");
#if 0 //moved this part of code into grabFrame
//swap current and new frames
unsigned char* tmp = m_frameYUV420;
m_frameYUV420 = m_frameYUV420next;
m_frameYUV420next = tmp;
//discard cached frames
m_hasGray = false;
m_hasColor = false;
#endif
cv
::
Mat
m_frameYUV420next_ref
=
m_frameYUV420next
;
memcpy
(
m_frameYUV420next_ref
.
ptr
(),
buffer
,
bufferSize
);
// LOGD("CvCapture_Android::setFrame -- memcpy is done");
// ((HighguiAndroidCameraActivity*)m_activity)->LogFramesRate();
m_dataState
=
CVCAPTURE_ANDROID_STATE_HAS_NEW_FRAME_UNGRABBED
;
m_waitingNextFrame
=
false
;
//set flag that no more frames required at this moment
...
...
@@ -482,17 +476,22 @@ void CvCapture_Android::prepareCacheForYUV(int width, int height)
LOGD
(
"CvCapture_Android::prepareCacheForYUV: Changing size of buffers: from width=%d height=%d to width=%d height=%d"
,
m_width
,
m_height
,
width
,
height
);
m_width
=
width
;
m_height
=
height
;
/*
unsigned char *tmp = m_frameYUV420next;
m_frameYUV420next = new unsigned char [width * height * 3 / 2];
if
(
tmp
!=
NULL
)
{
if (tmp != NULL)
{
delete[] tmp;
}
tmp = m_frameYUV420;
m_frameYUV420 = new unsigned char [width * height * 3 / 2];
if
(
tmp
!=
NULL
)
{
if (tmp != NULL)
{
delete[] tmp;
}
}*/
m_frameYUV420
.
create
(
height
*
3
/
2
,
width
,
CV_8UC1
);
m_frameYUV420next
.
create
(
height
*
3
/
2
,
width
,
CV_8UC1
);
}
}
...
...
samples/android/15-puzzle/src/org/opencv/samples/puzzle15/SampleCvViewBase.java
View file @
42a4ed6e
...
...
@@ -14,7 +14,7 @@ import android.view.SurfaceHolder;
import
android.view.SurfaceView
;
public
abstract
class
SampleCvViewBase
extends
SurfaceView
implements
SurfaceHolder
.
Callback
,
Runnable
{
private
static
final
String
TAG
=
"Sample::SurfaceView"
;
private
static
final
String
TAG
=
"Sample
-15puzzle
::SurfaceView"
;
private
SurfaceHolder
mHolder
;
private
VideoCapture
mCamera
;
...
...
@@ -32,8 +32,7 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
releaseCamera
();
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(!
mCamera
.
isOpened
())
{
mCamera
.
release
();
mCamera
=
null
;
releaseCamera
();
Log
.
e
(
TAG
,
"Failed to open native camera"
);
return
false
;
}
...
...
samples/android/15-puzzle/src/org/opencv/samples/puzzle15/puzzle15Activity.java
View file @
42a4ed6e
...
...
@@ -12,6 +12,7 @@ import android.util.Log;
import
android.view.Menu
;
import
android.view.MenuItem
;
import
android.view.Window
;
import
android.view.WindowManager
;
/** Activity class implements LoaderCallbackInterface to handle OpenCV initialization status **/
public
class
puzzle15Activity
extends
Activity
...
...
@@ -21,6 +22,7 @@ public class puzzle15Activity extends Activity
private
MenuItem
mItemNewGame
;
private
MenuItem
mItemToggleNumbers
;
private
puzzle15View
mView
=
null
;
private
BaseLoaderCallback
mOpenCVCallBack
=
new
BaseLoaderCallback
(
this
)
{
@Override
public
void
onManagerConnected
(
int
status
)
{
...
...
@@ -68,51 +70,38 @@ public class puzzle15Activity extends Activity
}
};
public
puzzle15Activity
()
{
public
puzzle15Activity
()
{
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
if
(
null
!=
mView
)
mView
.
releaseCamera
();
super
.
onPause
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
(
mView
!=
null
&&
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
AlertDialog
.
BUTTON_POSITIVE
,
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
}
/** Called when the activity is first created. */
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
public
void
onCreate
(
Bundle
savedInstanceState
)
{
Log
.
i
(
TAG
,
"onCreate"
);
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
getWindow
().
addFlags
(
WindowManager
.
LayoutParams
.
FLAG_KEEP_SCREEN_ON
);
}
@Override
...
...
samples/android/15-puzzle/src/org/opencv/samples/puzzle15/puzzle15View.java
View file @
42a4ed6e
...
...
@@ -83,11 +83,11 @@ public class puzzle15View extends SampleCvViewBase implements OnTouchListener {
return
sum
%
2
==
0
;
}
private
void
createPuzzle
(
int
cols
,
int
rows
)
{
private
void
createPuzzle
(
int
cols
,
int
rows
,
int
type
)
{
mCells
=
new
Mat
[
gridArea
];
mCells15
=
new
Mat
[
gridArea
];
mRgba15
=
new
Mat
(
rows
,
cols
,
mRgba
.
type
()
);
mRgba15
=
new
Mat
(
rows
,
cols
,
type
);
mIndexses
=
new
int
[
gridArea
];
for
(
int
i
=
0
;
i
<
gridSize
;
i
++)
{
...
...
@@ -122,7 +122,11 @@ public class puzzle15View extends SampleCvViewBase implements OnTouchListener {
cols
=
cols
-
cols
%
4
;
if
(
mCells
==
null
)
createPuzzle
(
cols
,
rows
);
createPuzzle
(
cols
,
rows
,
mRgba
.
type
());
else
if
(
mRgba15
.
cols
()
!=
cols
||
mRgba15
.
rows
()
!=
rows
)
{
releaseMats
();
createPuzzle
(
cols
,
rows
,
mRgba
.
type
());
}
// copy shuffled tiles
for
(
int
i
=
0
;
i
<
gridArea
;
i
++)
{
...
...
@@ -162,6 +166,15 @@ public class puzzle15View extends SampleCvViewBase implements OnTouchListener {
super
.
run
();
synchronized
(
this
)
{
releaseMats
();
if
(
mRgba
!=
null
)
mRgba
.
release
();
mRgba
=
null
;
}
}
private
void
releaseMats
()
{
// Explicitly deallocate Mats
if
(
mCells
!=
null
)
{
for
(
Mat
m
:
mCells
)
...
...
@@ -171,18 +184,15 @@ public class puzzle15View extends SampleCvViewBase implements OnTouchListener {
for
(
Mat
m
:
mCells15
)
m
.
release
();
}
if
(
mRgba
!=
null
)
mRgba
.
release
();
if
(
mRgba15
!=
null
)
mRgba15
.
release
();
mRgba
=
null
;
mRgba15
=
null
;
mCells
=
null
;
mCells15
=
null
;
mIndexses
=
null
;
}
}
public
boolean
onTouch
(
View
v
,
MotionEvent
event
)
{
if
(
mRgba
==
null
)
return
false
;
...
...
samples/android/color-blob-detection/src/org/opencv/samples/colorblobdetect/ColorBlobDetectionActivity.java
View file @
42a4ed6e
...
...
@@ -10,10 +10,11 @@ import android.content.DialogInterface;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.Window
;
import
android.view.WindowManager
;
public
class
ColorBlobDetectionActivity
extends
Activity
{
private
static
final
String
TAG
=
"Example/ColorBlobDetection
"
;
private
static
final
String
TAG
=
"Sample-ColorBlobDetection::Activity
"
;
private
ColorBlobDetectionView
mView
;
private
BaseLoaderCallback
mOpenCVCallBack
=
new
BaseLoaderCallback
(
this
)
{
...
...
@@ -63,34 +64,27 @@ public class ColorBlobDetectionActivity extends Activity {
}
};
public
ColorBlobDetectionActivity
()
{
public
ColorBlobDetectionActivity
()
{
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
if
(
null
!=
mView
)
mView
.
releaseCamera
();
super
.
onPause
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
(
(
null
!=
mView
)
&&
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
AlertDialog
.
BUTTON_POSITIVE
,
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
}
...
...
@@ -99,12 +93,7 @@ public class ColorBlobDetectionActivity extends Activity {
public
void
onCreate
(
Bundle
savedInstanceState
)
{
Log
.
i
(
TAG
,
"onCreate"
);
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
getWindow
().
addFlags
(
WindowManager
.
LayoutParams
.
FLAG_KEEP_SCREEN_ON
);
}
}
\ No newline at end of file
samples/android/color-blob-detection/src/org/opencv/samples/colorblobdetect/ColorBlobDetectionView.java
View file @
42a4ed6e
...
...
@@ -33,13 +33,12 @@ public class ColorBlobDetectionView extends SampleCvViewBase implements OnTouchL
private
static
Size
SPECTRUM_SIZE
=
new
Size
(
200
,
32
);
// Logcat tag
private
static
final
String
TAG
=
"Example/ColorBlobDetection
"
;
private
static
final
String
TAG
=
"Sample-ColorBlobDetection::View
"
;
private
static
final
Scalar
CONTOUR_COLOR
=
new
Scalar
(
255
,
0
,
0
,
255
);
public
ColorBlobDetectionView
(
Context
context
)
{
public
ColorBlobDetectionView
(
Context
context
)
{
super
(
context
);
setOnTouchListener
(
this
);
}
...
...
@@ -54,8 +53,7 @@ public class ColorBlobDetectionView extends SampleCvViewBase implements OnTouchL
super
.
surfaceCreated
(
holder
);
}
public
boolean
onTouch
(
View
v
,
MotionEvent
event
)
{
public
boolean
onTouch
(
View
v
,
MotionEvent
event
)
{
int
cols
=
mRgba
.
cols
();
int
rows
=
mRgba
.
rows
();
...
...
@@ -86,9 +84,7 @@ public class ColorBlobDetectionView extends SampleCvViewBase implements OnTouchL
mBlobColorHsv
=
Core
.
sumElems
(
touchedRegionHsv
);
int
pointCount
=
touchedRect
.
width
*
touchedRect
.
height
;
for
(
int
i
=
0
;
i
<
mBlobColorHsv
.
val
.
length
;
i
++)
{
mBlobColorHsv
.
val
[
i
]
/=
pointCount
;
}
mBlobColorRgba
=
converScalarHsv2Rgba
(
mBlobColorHsv
);
...
...
@@ -110,8 +106,7 @@ public class ColorBlobDetectionView extends SampleCvViewBase implements OnTouchL
Bitmap
bmp
=
Bitmap
.
createBitmap
(
mRgba
.
cols
(),
mRgba
.
rows
(),
Bitmap
.
Config
.
ARGB_8888
);
if
(
mIsColorSelected
)
{
if
(
mIsColorSelected
)
{
mDetector
.
process
(
mRgba
);
List
<
MatOfPoint
>
contours
=
mDetector
.
getContours
();
Log
.
e
(
TAG
,
"Contours count: "
+
contours
.
size
());
...
...
@@ -135,8 +130,7 @@ public class ColorBlobDetectionView extends SampleCvViewBase implements OnTouchL
return
bmp
;
}
private
Scalar
converScalarHsv2Rgba
(
Scalar
hsvColor
)
{
private
Scalar
converScalarHsv2Rgba
(
Scalar
hsvColor
)
{
Mat
pointMatRgba
=
new
Mat
();
Mat
pointMatHsv
=
new
Mat
(
1
,
1
,
CvType
.
CV_8UC3
,
hsvColor
);
Imgproc
.
cvtColor
(
pointMatHsv
,
pointMatRgba
,
Imgproc
.
COLOR_HSV2RGB_FULL
,
4
);
...
...
samples/android/color-blob-detection/src/org/opencv/samples/colorblobdetect/ColorBlobDetector.java
View file @
42a4ed6e
...
...
@@ -11,15 +11,12 @@ import org.opencv.core.MatOfPoint;
import
org.opencv.core.Scalar
;
import
org.opencv.imgproc.Imgproc
;
public
class
ColorBlobDetector
{
public
void
setColorRadius
(
Scalar
radius
)
{
public
class
ColorBlobDetector
{
public
void
setColorRadius
(
Scalar
radius
)
{
mColorRadius
=
radius
;
}
public
void
setHsvColor
(
Scalar
hsvColor
)
{
public
void
setHsvColor
(
Scalar
hsvColor
)
{
double
minH
=
(
hsvColor
.
val
[
0
]
>=
mColorRadius
.
val
[
0
])
?
hsvColor
.
val
[
0
]-
mColorRadius
.
val
[
0
]
:
0
;
double
maxH
=
(
hsvColor
.
val
[
0
]+
mColorRadius
.
val
[
0
]
<=
255
)
?
hsvColor
.
val
[
0
]+
mColorRadius
.
val
[
0
]
:
255
;
...
...
@@ -37,28 +34,23 @@ public class ColorBlobDetector
Mat
spectrumHsv
=
new
Mat
(
1
,
(
int
)(
maxH
-
minH
),
CvType
.
CV_8UC3
);
for
(
int
j
=
0
;
j
<
maxH
-
minH
;
j
++)
{
for
(
int
j
=
0
;
j
<
maxH
-
minH
;
j
++)
{
byte
[]
tmp
=
{(
byte
)(
minH
+
j
),
(
byte
)
255
,
(
byte
)
255
};
spectrumHsv
.
put
(
0
,
j
,
tmp
);
}
Imgproc
.
cvtColor
(
spectrumHsv
,
mSpectrum
,
Imgproc
.
COLOR_HSV2RGB_FULL
,
4
);
}
public
Mat
getSpectrum
()
{
public
Mat
getSpectrum
()
{
return
mSpectrum
;
}
public
void
setMinContourArea
(
double
area
)
{
public
void
setMinContourArea
(
double
area
)
{
mMinContourArea
=
area
;
}
public
void
process
(
Mat
rgbaImage
)
{
public
void
process
(
Mat
rgbaImage
)
{
Mat
pyrDownMat
=
new
Mat
();
Imgproc
.
pyrDown
(
rgbaImage
,
pyrDownMat
);
...
...
@@ -80,8 +72,7 @@ public class ColorBlobDetector
// Find max contour area
double
maxArea
=
0
;
Iterator
<
MatOfPoint
>
each
=
contours
.
iterator
();
while
(
each
.
hasNext
())
{
while
(
each
.
hasNext
())
{
MatOfPoint
wrapper
=
each
.
next
();
double
area
=
Imgproc
.
contourArea
(
wrapper
);
if
(
area
>
maxArea
)
...
...
@@ -91,19 +82,16 @@ public class ColorBlobDetector
// Filter contours by area and resize to fit the original image size
mContours
.
clear
();
each
=
contours
.
iterator
();
while
(
each
.
hasNext
())
{
while
(
each
.
hasNext
())
{
MatOfPoint
contour
=
each
.
next
();
if
(
Imgproc
.
contourArea
(
contour
)
>
mMinContourArea
*
maxArea
)
{
if
(
Imgproc
.
contourArea
(
contour
)
>
mMinContourArea
*
maxArea
)
{
Core
.
multiply
(
contour
,
new
Scalar
(
4
,
4
),
contour
);
mContours
.
add
(
contour
);
}
}
}
public
List
<
MatOfPoint
>
getContours
()
{
public
List
<
MatOfPoint
>
getContours
()
{
return
mContours
;
}
...
...
samples/android/color-blob-detection/src/org/opencv/samples/colorblobdetect/SampleCvViewBase.java
View file @
42a4ed6e
...
...
@@ -32,8 +32,7 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
releaseCamera
();
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(!
mCamera
.
isOpened
())
{
mCamera
.
release
();
mCamera
=
null
;
releaseCamera
();
Log
.
e
(
TAG
,
"Failed to open native camera"
);
return
false
;
}
...
...
samples/android/face-detection/jni/Android.mk
View file @
42a4ed6e
samples/android/face-detection/jni/DetectionBasedTracker_jni.cpp
View file @
42a4ed6e
...
...
@@ -68,6 +68,7 @@ struct DetectorAgregator
JNIEXPORT
jlong
JNICALL
Java_org_opencv_samples_fd_DetectionBasedTracker_nativeCreateObject
(
JNIEnv
*
jenv
,
jclass
,
jstring
jFileName
,
jint
faceSize
)
{
LOGD
(
"Java_org_opencv_samples_fd_DetectionBasedTracker_nativeCreateObject enter"
);
const
char
*
jnamestr
=
jenv
->
GetStringUTFChars
(
jFileName
,
NULL
);
string
stdFileName
(
jnamestr
);
jlong
result
=
0
;
...
...
@@ -101,6 +102,7 @@ JNIEXPORT jlong JNICALL Java_org_opencv_samples_fd_DetectionBasedTracker_nativeC
return
0
;
}
LOGD
(
"Java_org_opencv_samples_fd_DetectionBasedTracker_nativeCreateObject exit"
);
return
result
;
}
...
...
@@ -110,10 +112,13 @@ JNIEXPORT void JNICALL Java_org_opencv_samples_fd_DetectionBasedTracker_nativeDe
LOGD
(
"Java_org_opencv_samples_fd_DetectionBasedTracker_nativeDestroyObject"
);
try
{
if
(
thiz
!=
0
)
{
((
DetectorAgregator
*
)
thiz
)
->
tracker
->
stop
();
delete
(
DetectorAgregator
*
)
thiz
;
}
}
catch
(
cv
::
Exception
e
)
{
LOGD
(
"nativeestroyObject catched cv::Exception: %s"
,
e
.
what
());
...
...
@@ -128,6 +133,7 @@ JNIEXPORT void JNICALL Java_org_opencv_samples_fd_DetectionBasedTracker_nativeDe
jclass
je
=
jenv
->
FindClass
(
"java/lang/Exception"
);
jenv
->
ThrowNew
(
je
,
"Unknown exception in JNI code {Java_org_opencv_samples_fd_DetectionBasedTracker_nativeDestroyObject(...)}"
);
}
LOGD
(
"Java_org_opencv_samples_fd_DetectionBasedTracker_nativeDestroyObject exit"
);
}
JNIEXPORT
void
JNICALL
Java_org_opencv_samples_fd_DetectionBasedTracker_nativeStart
...
...
@@ -153,6 +159,7 @@ JNIEXPORT void JNICALL Java_org_opencv_samples_fd_DetectionBasedTracker_nativeSt
jclass
je
=
jenv
->
FindClass
(
"java/lang/Exception"
);
jenv
->
ThrowNew
(
je
,
"Unknown exception in JNI code {Java_org_opencv_samples_fd_DetectionBasedTracker_nativeStart(...)}"
);
}
LOGD
(
"Java_org_opencv_samples_fd_DetectionBasedTracker_nativeStart exit"
);
}
JNIEXPORT
void
JNICALL
Java_org_opencv_samples_fd_DetectionBasedTracker_nativeStop
...
...
@@ -178,6 +185,7 @@ JNIEXPORT void JNICALL Java_org_opencv_samples_fd_DetectionBasedTracker_nativeSt
jclass
je
=
jenv
->
FindClass
(
"java/lang/Exception"
);
jenv
->
ThrowNew
(
je
,
"Unknown exception in JNI code {Java_org_opencv_samples_fd_DetectionBasedTracker_nativeStop(...)}"
);
}
LOGD
(
"Java_org_opencv_samples_fd_DetectionBasedTracker_nativeStop exit"
);
}
JNIEXPORT
void
JNICALL
Java_org_opencv_samples_fd_DetectionBasedTracker_nativeSetFaceSize
...
...
samples/android/face-detection/jni/DetectionBasedTracker_jni.h
View file @
42a4ed6e
samples/android/face-detection/src/org/opencv/samples/fd/DetectionBasedTracker.java
View file @
42a4ed6e
...
...
@@ -5,33 +5,27 @@ import org.opencv.core.MatOfRect;
public
class
DetectionBasedTracker
{
public
DetectionBasedTracker
(
String
cascadeName
,
int
minFaceSize
)
{
public
DetectionBasedTracker
(
String
cascadeName
,
int
minFaceSize
)
{
mNativeObj
=
nativeCreateObject
(
cascadeName
,
minFaceSize
);
}
public
void
start
()
{
public
void
start
()
{
nativeStart
(
mNativeObj
);
}
public
void
stop
()
{
public
void
stop
()
{
nativeStop
(
mNativeObj
);
}
public
void
setMinFaceSize
(
int
size
)
{
public
void
setMinFaceSize
(
int
size
)
{
nativeSetFaceSize
(
mNativeObj
,
size
);
}
public
void
detect
(
Mat
imageGray
,
MatOfRect
faces
)
{
public
void
detect
(
Mat
imageGray
,
MatOfRect
faces
)
{
nativeDetect
(
mNativeObj
,
imageGray
.
getNativeObjAddr
(),
faces
.
getNativeObjAddr
());
}
public
void
release
()
{
public
void
release
()
{
nativeDestroyObject
(
mNativeObj
);
mNativeObj
=
0
;
}
...
...
@@ -45,8 +39,7 @@ public class DetectionBasedTracker
private
static
native
void
nativeSetFaceSize
(
long
thiz
,
int
size
);
private
static
native
void
nativeDetect
(
long
thiz
,
long
inputImage
,
long
faces
);
static
{
static
{
System
.
loadLibrary
(
"detection_based_tracker"
);
}
}
samples/android/face-detection/src/org/opencv/samples/fd/FdActivity.java
View file @
42a4ed6e
...
...
@@ -12,16 +12,18 @@ import android.util.Log;
import
android.view.Menu
;
import
android.view.MenuItem
;
import
android.view.Window
;
import
android.view.WindowManager
;
public
class
FdActivity
extends
Activity
{
private
static
final
String
TAG
=
"Sample::Activity"
;
private
static
final
String
TAG
=
"Sample
-FD
::Activity"
;
private
MenuItem
mItemFace50
;
private
MenuItem
mItemFace40
;
private
MenuItem
mItemFace30
;
private
MenuItem
mItemFace20
;
private
MenuItem
mItemType
;
private
int
mDetectorType
=
0
;
private
String
[]
mDetectorName
;
private
FdView
mView
;
private
BaseLoaderCallback
mOpenCVCallBack
=
new
BaseLoaderCallback
(
this
)
{
...
...
@@ -77,10 +79,6 @@ public class FdActivity extends Activity {
}
};
private
int
mDetectorType
=
0
;
private
String
[]
mDetectorName
;
public
FdActivity
()
{
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
mDetectorName
=
new
String
[
2
];
...
...
@@ -91,26 +89,20 @@ public class FdActivity extends Activity {
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
if
(
mView
!=
null
)
mView
.
releaseCamera
();
super
.
onPause
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
(
mView
!=
null
&&
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
AlertDialog
.
BUTTON_POSITIVE
,
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
}
...
...
@@ -120,12 +112,7 @@ public class FdActivity extends Activity {
Log
.
i
(
TAG
,
"onCreate"
);
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
getWindow
().
addFlags
(
WindowManager
.
LayoutParams
.
FLAG_KEEP_SCREEN_ON
);
}
@Override
...
...
@@ -136,7 +123,6 @@ public class FdActivity extends Activity {
mItemFace30
=
menu
.
add
(
"Face size 30%"
);
mItemFace20
=
menu
.
add
(
"Face size 20%"
);
mItemType
=
menu
.
add
(
mDetectorName
[
mDetectorType
]);
return
true
;
}
...
...
samples/android/face-detection/src/org/opencv/samples/fd/FdView.java
View file @
42a4ed6e
...
...
@@ -22,7 +22,7 @@ import android.util.Log;
import
android.view.SurfaceHolder
;
class
FdView
extends
SampleCvViewBase
{
private
static
final
String
TAG
=
"Sample
::Fd
View"
;
private
static
final
String
TAG
=
"Sample
-FD::
View"
;
private
Mat
mRgba
;
private
Mat
mGray
;
private
File
mCascadeFile
;
...
...
@@ -39,25 +39,19 @@ class FdView extends SampleCvViewBase {
private
float
mRelativeFaceSize
=
0
;
private
int
mAbsoluteFaceSize
=
0
;
public
void
setMinFaceSize
(
float
faceSize
)
{
public
void
setMinFaceSize
(
float
faceSize
)
{
mRelativeFaceSize
=
faceSize
;
mAbsoluteFaceSize
=
0
;
}
public
void
setDetectorType
(
int
type
)
{
if
(
mDetectorType
!=
type
)
{
public
void
setDetectorType
(
int
type
)
{
if
(
mDetectorType
!=
type
)
{
mDetectorType
=
type
;
if
(
type
==
NATIVE_DETECTOR
)
{
if
(
type
==
NATIVE_DETECTOR
)
{
Log
.
i
(
TAG
,
"Detection Based Tracker enabled"
);
mNativeDetector
.
start
();
}
else
{
}
else
{
Log
.
i
(
TAG
,
"Cascade detector enabled"
);
mNativeDetector
.
stop
();
}
...
...
@@ -114,11 +108,9 @@ class FdView extends SampleCvViewBase {
capture
.
retrieve
(
mRgba
,
Highgui
.
CV_CAP_ANDROID_COLOR_FRAME_RGBA
);
capture
.
retrieve
(
mGray
,
Highgui
.
CV_CAP_ANDROID_GREY_FRAME
);
if
(
mAbsoluteFaceSize
==
0
)
{
if
(
mAbsoluteFaceSize
==
0
)
{
int
height
=
mGray
.
rows
();
if
(
Math
.
round
(
height
*
mRelativeFaceSize
)
>
0
);
{
if
(
Math
.
round
(
height
*
mRelativeFaceSize
)
>
0
)
{
mAbsoluteFaceSize
=
Math
.
round
(
height
*
mRelativeFaceSize
);
}
mNativeDetector
.
setMinFaceSize
(
mAbsoluteFaceSize
);
...
...
@@ -126,19 +118,16 @@ class FdView extends SampleCvViewBase {
MatOfRect
faces
=
new
MatOfRect
();
if
(
mDetectorType
==
JAVA_DETECTOR
)
{
if
(
mDetectorType
==
JAVA_DETECTOR
)
{
if
(
mJavaDetector
!=
null
)
mJavaDetector
.
detectMultiScale
(
mGray
,
faces
,
1.1
,
2
,
2
// TODO: objdetect.CV_HAAR_SCALE_IMAGE
,
new
Size
(
mAbsoluteFaceSize
,
mAbsoluteFaceSize
),
new
Size
());
mJavaDetector
.
detectMultiScale
(
mGray
,
faces
,
1.1
,
2
,
2
,
// TODO: objdetect.CV_HAAR_SCALE_IMAGE
new
Size
(
mAbsoluteFaceSize
,
mAbsoluteFaceSize
),
new
Size
());
}
else
if
(
mDetectorType
==
NATIVE_DETECTOR
)
{
else
if
(
mDetectorType
==
NATIVE_DETECTOR
)
{
if
(
mNativeDetector
!=
null
)
mNativeDetector
.
detect
(
mGray
,
faces
);
}
else
{
else
{
Log
.
e
(
TAG
,
"Detection method is not selected!"
);
}
...
...
samples/android/face-detection/src/org/opencv/samples/fd/SampleCvViewBase.java
View file @
42a4ed6e
...
...
@@ -34,9 +34,8 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
releaseCamera
();
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(!
mCamera
.
isOpened
())
{
mCamera
.
release
();
mCamera
=
null
;
Log
.
e
(
TAG
,
"Failed to open native camera"
);
releaseCamera
();
return
false
;
}
}
...
...
@@ -93,6 +92,7 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceDestroyed"
);
releaseCamera
();
Log
.
i
(
TAG
,
"surfaceDestroyed2"
);
}
protected
abstract
Bitmap
processFrame
(
VideoCapture
capture
);
...
...
samples/android/image-manipulations/src/org/opencv/samples/imagemanipulations/ImageManipulationsActivity.java
View file @
42a4ed6e
...
...
@@ -12,6 +12,7 @@ import android.util.Log;
import
android.view.Menu
;
import
android.view.MenuItem
;
import
android.view.Window
;
import
android.view.WindowManager
;
public
class
ImageManipulationsActivity
extends
Activity
{
...
...
@@ -93,26 +94,20 @@ public class ImageManipulationsActivity extends Activity {
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
if
(
null
!=
mView
)
mView
.
releaseCamera
();
super
.
onPause
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
(
(
null
!=
mView
)
&&
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
AlertDialog
.
BUTTON_POSITIVE
,
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
}
...
...
@@ -122,12 +117,7 @@ public class ImageManipulationsActivity extends Activity {
Log
.
i
(
TAG
,
"onCreate"
);
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
getWindow
().
addFlags
(
WindowManager
.
LayoutParams
.
FLAG_KEEP_SCREEN_ON
);
}
@Override
...
...
samples/android/image-manipulations/src/org/opencv/samples/imagemanipulations/ImageManipulationsView.java
View file @
42a4ed6e
samples/android/image-manipulations/src/org/opencv/samples/imagemanipulations/SampleCvViewBase.java
View file @
42a4ed6e
...
...
@@ -34,8 +34,7 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
releaseCamera
();
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(!
mCamera
.
isOpened
())
{
mCamera
.
release
();
mCamera
=
null
;
releaseCamera
();
Log
.
e
(
TAG
,
"Failed to open native camera"
);
return
false
;
}
...
...
samples/android/tutorial-0-androidcamera/src/org/opencv/samples/tutorial0/Sample0Base.java
View file @
42a4ed6e
samples/android/tutorial-0-androidcamera/src/org/opencv/samples/tutorial0/Sample0View.java
View file @
42a4ed6e
...
...
@@ -35,7 +35,7 @@ class Sample0View extends SampleViewBase {
rgba
[
i
]
=
0xff000000
+
(
y
<<
16
)
+
(
y
<<
8
)
+
y
;
}
}
else
if
(
view_mode
==
VIEW_MODE_RGBA
)
{
for
(
int
i
=
0
;
i
<
getFrameHeight
();
i
++)
for
(
int
i
=
0
;
i
<
getFrameHeight
();
i
++)
{
for
(
int
j
=
0
;
j
<
getFrameWidth
();
j
++)
{
int
index
=
i
*
getFrameWidth
()
+
j
;
int
supply_index
=
frameSize
+
(
i
>>
1
)
*
getFrameWidth
()
+
(
j
&
~
1
);
...
...
@@ -56,6 +56,7 @@ class Sample0View extends SampleViewBase {
rgba
[
i
*
getFrameWidth
()
+
j
]
=
0xff000000
+
(
b
<<
16
)
+
(
g
<<
8
)
+
r
;
}
}
}
mBitmap
.
setPixels
(
rgba
,
0
/* offset */
,
getFrameWidth
()
/* stride */
,
0
,
0
,
getFrameWidth
(),
getFrameHeight
());
return
mBitmap
;
...
...
samples/android/tutorial-0-androidcamera/src/org/opencv/samples/tutorial0/SampleViewBase.java
View file @
42a4ed6e
...
...
@@ -25,6 +25,7 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
private
byte
[]
mFrame
;
private
boolean
mThreadRun
;
private
byte
[]
mBuffer
;
private
SurfaceTexture
mSf
;
public
SampleViewBase
(
Context
context
)
{
...
...
@@ -43,8 +44,10 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
}
public
void
setPreview
()
throws
IOException
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
HONEYCOMB
)
mCamera
.
setPreviewTexture
(
new
SurfaceTexture
(
10
)
);
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
HONEYCOMB
)
{
mSf
=
new
SurfaceTexture
(
10
);
mCamera
.
setPreviewTexture
(
mSf
);
}
else
mCamera
.
setPreviewDisplay
(
null
);
}
...
...
@@ -52,7 +55,6 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
public
boolean
openCamera
()
{
Log
.
i
(
TAG
,
"openCamera"
);
releaseCamera
();
mCamera
=
Camera
.
open
();
if
(
mCamera
==
null
)
{
Log
.
e
(
TAG
,
"Can't open camera!"
);
...
...
@@ -125,15 +127,15 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
mFrame
=
new
byte
[
size
];
mCamera
.
addCallbackBuffer
(
mBuffer
);
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStarted
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
try
{
setPreview
();
}
catch
(
IOException
e
)
{
Log
.
e
(
TAG
,
"mCamera.setPreviewDisplay/setPreviewTexture fails: "
+
e
);
}
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStarted
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
/* Now we can start a preview */
mCamera
.
startPreview
();
}
...
...
samples/android/tutorial-1-addopencv/src/org/opencv/samples/tutorial1/Sample1Java.java
View file @
42a4ed6e
...
...
@@ -12,6 +12,7 @@ import android.util.Log;
import
android.view.Menu
;
import
android.view.MenuItem
;
import
android.view.Window
;
import
android.view.WindowManager
;
public
class
Sample1Java
extends
Activity
{
private
static
final
String
TAG
=
"Sample::Activity"
;
...
...
@@ -45,6 +46,7 @@ public class Sample1Java extends Activity {
ad
.
show
();
}
}
break
;
/** OpenCV loader cannot start Google Play **/
case
LoaderCallbackInterface
.
MARKET_ERROR
:
{
...
...
@@ -75,26 +77,20 @@ public class Sample1Java extends Activity {
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
if
(
null
!=
mView
)
mView
.
releaseCamera
();
super
.
onPause
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
(
(
null
!=
mView
)
&&
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
AlertDialog
.
BUTTON_POSITIVE
,
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
}
...
...
@@ -104,12 +100,7 @@ public class Sample1Java extends Activity {
Log
.
i
(
TAG
,
"onCreate"
);
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
getWindow
().
addFlags
(
WindowManager
.
LayoutParams
.
FLAG_KEEP_SCREEN_ON
);
}
@Override
...
...
samples/android/tutorial-1-addopencv/src/org/opencv/samples/tutorial1/Sample1View.java
View file @
42a4ed6e
samples/android/tutorial-1-addopencv/src/org/opencv/samples/tutorial1/SampleViewBase.java
View file @
42a4ed6e
...
...
@@ -25,6 +25,7 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
private
byte
[]
mFrame
;
private
boolean
mThreadRun
;
private
byte
[]
mBuffer
;
private
SurfaceTexture
mSf
;
public
SampleViewBase
(
Context
context
)
{
...
...
@@ -43,8 +44,10 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
}
public
void
setPreview
()
throws
IOException
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
HONEYCOMB
)
mCamera
.
setPreviewTexture
(
new
SurfaceTexture
(
10
)
);
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
HONEYCOMB
)
{
mSf
=
new
SurfaceTexture
(
10
);
mCamera
.
setPreviewTexture
(
mSf
);
}
else
mCamera
.
setPreviewDisplay
(
null
);
}
...
...
@@ -124,15 +127,15 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
mFrame
=
new
byte
[
size
];
mCamera
.
addCallbackBuffer
(
mBuffer
);
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStarted
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
try
{
setPreview
();
}
catch
(
IOException
e
)
{
Log
.
e
(
TAG
,
"mCamera.setPreviewDisplay/setPreviewTexture fails: "
+
e
);
}
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStarted
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
/* Now we can start a preview */
mCamera
.
startPreview
();
}
...
...
samples/android/tutorial-2-opencvcamera/src/org/opencv/samples/tutorial2/Sample2NativeCamera.java
View file @
42a4ed6e
...
...
@@ -12,6 +12,7 @@ import android.util.Log;
import
android.view.Menu
;
import
android.view.MenuItem
;
import
android.view.Window
;
import
android.view.WindowManager
;
public
class
Sample2NativeCamera
extends
Activity
{
private
static
final
String
TAG
=
"Sample::Activity"
;
...
...
@@ -82,26 +83,20 @@ public class Sample2NativeCamera extends Activity {
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
if
(
null
!=
mView
)
mView
.
releaseCamera
();
super
.
onPause
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
((
null
!=
mView
)
&&
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
AlertDialog
.
BUTTON_POSITIVE
,
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
}
...
...
@@ -111,11 +106,7 @@ public class Sample2NativeCamera extends Activity {
Log
.
i
(
TAG
,
"onCreate"
);
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
getWindow
().
addFlags
(
WindowManager
.
LayoutParams
.
FLAG_KEEP_SCREEN_ON
);
}
@Override
...
...
samples/android/tutorial-2-opencvcamera/src/org/opencv/samples/tutorial2/Sample2View.java
View file @
42a4ed6e
samples/android/tutorial-2-opencvcamera/src/org/opencv/samples/tutorial2/SampleCvViewBase.java
View file @
42a4ed6e
...
...
@@ -32,8 +32,7 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
releaseCamera
();
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(!
mCamera
.
isOpened
())
{
mCamera
.
release
();
mCamera
=
null
;
releaseCamera
();
Log
.
e
(
TAG
,
"Failed to open native camera"
);
return
false
;
}
...
...
samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/Sample3Native.java
View file @
42a4ed6e
...
...
@@ -10,6 +10,7 @@ import android.content.DialogInterface;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.Window
;
import
android.view.WindowManager
;
public
class
Sample3Native
extends
Activity
{
private
static
final
String
TAG
=
"Sample::Activity"
;
...
...
@@ -73,26 +74,20 @@ public class Sample3Native extends Activity {
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
if
(
null
!=
mView
)
mView
.
releaseCamera
();
super
.
onPause
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
((
null
!=
mView
)
&&
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
AlertDialog
.
BUTTON_POSITIVE
,
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
}
...
...
@@ -102,10 +97,6 @@ public class Sample3Native extends Activity {
Log
.
i
(
TAG
,
"onCreate"
);
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
getWindow
().
addFlags
(
WindowManager
.
LayoutParams
.
FLAG_KEEP_SCREEN_ON
);
}
}
samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/Sample3View.java
View file @
42a4ed6e
samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/SampleViewBase.java
View file @
42a4ed6e
...
...
@@ -24,6 +24,7 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
private
byte
[]
mFrame
;
private
boolean
mThreadRun
;
private
byte
[]
mBuffer
;
private
SurfaceTexture
mSf
;
public
SampleViewBase
(
Context
context
)
{
...
...
@@ -42,8 +43,10 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
}
public
void
setPreview
()
throws
IOException
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
HONEYCOMB
)
mCamera
.
setPreviewTexture
(
new
SurfaceTexture
(
10
)
);
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
HONEYCOMB
)
{
mSf
=
new
SurfaceTexture
(
10
);
mCamera
.
setPreviewTexture
(
mSf
);
}
else
mCamera
.
setPreviewDisplay
(
null
);
}
...
...
@@ -123,15 +126,15 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
mFrame
=
new
byte
[
size
];
mCamera
.
addCallbackBuffer
(
mBuffer
);
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStarted
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
try
{
setPreview
();
}
catch
(
IOException
e
)
{
Log
.
e
(
TAG
,
"mCamera.setPreviewDisplay/setPreviewTexture fails: "
+
e
);
}
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStarted
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
/* Now we can start a preview */
mCamera
.
startPreview
();
}
...
...
samples/android/tutorial-4-mixed/src/org/opencv/samples/tutorial4/Sample4Mixed.java
View file @
42a4ed6e
...
...
@@ -12,6 +12,7 @@ import android.util.Log;
import
android.view.Menu
;
import
android.view.MenuItem
;
import
android.view.Window
;
import
android.view.WindowManager
;
public
class
Sample4Mixed
extends
Activity
{
private
static
final
String
TAG
=
"Sample::Activity"
;
...
...
@@ -81,26 +82,20 @@ public class Sample4Mixed extends Activity {
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
if
(
null
!=
mView
)
mView
.
releaseCamera
();
super
.
onPause
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
((
null
!=
mView
)
&&
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
AlertDialog
.
BUTTON_POSITIVE
,
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
}
...
...
@@ -109,14 +104,8 @@ public class Sample4Mixed extends Activity {
public
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
Log
.
i
(
TAG
,
"onCreate"
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
Log
.
i
(
TAG
,
"Trying to load OpenCV library"
);
if
(!
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mOpenCVCallBack
))
{
Log
.
e
(
TAG
,
"Cannot connect to OpenCV Manager"
);
}
getWindow
().
addFlags
(
WindowManager
.
LayoutParams
.
FLAG_KEEP_SCREEN_ON
);
}
public
boolean
onCreateOptionsMenu
(
Menu
menu
)
{
...
...
samples/android/tutorial-4-mixed/src/org/opencv/samples/tutorial4/Sample4View.java
View file @
42a4ed6e
samples/android/tutorial-4-mixed/src/org/opencv/samples/tutorial4/SampleViewBase.java
View file @
42a4ed6e
...
...
@@ -24,6 +24,7 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
private
byte
[]
mFrame
;
private
boolean
mThreadRun
;
private
byte
[]
mBuffer
;
private
SurfaceTexture
mSf
;
public
SampleViewBase
(
Context
context
)
{
...
...
@@ -42,8 +43,10 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
}
public
void
setPreview
()
throws
IOException
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
HONEYCOMB
)
mCamera
.
setPreviewTexture
(
new
SurfaceTexture
(
10
)
);
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
HONEYCOMB
)
{
mSf
=
new
SurfaceTexture
(
10
);
mCamera
.
setPreviewTexture
(
mSf
);
}
else
mCamera
.
setPreviewDisplay
(
null
);
}
...
...
@@ -123,15 +126,15 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
mFrame
=
new
byte
[
size
];
mCamera
.
addCallbackBuffer
(
mBuffer
);
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStarted
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
try
{
setPreview
();
}
catch
(
IOException
e
)
{
Log
.
e
(
TAG
,
"mCamera.setPreviewDisplay/setPreviewTexture fails: "
+
e
);
}
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStarted
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
/* Now we can start a preview */
mCamera
.
startPreview
();
}
...
...
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