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
60a98aa5
Commit
60a98aa5
authored
Nov 30, 2012
by
Andrey Kamaev
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #199 from apavlenko/remove_android_tutorial0
removing Android tutorial 0
parents
677443f3
ea83d384
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
0 additions
and
468 deletions
+0
-468
CMakeLists.txt
samples/android/CMakeLists.txt
+0
-1
.classpath
samples/android/tutorial-0-androidcamera/.classpath
+0
-8
.project
samples/android/tutorial-0-androidcamera/.project
+0
-33
org.eclipse.jdt.core.prefs
...rial-0-androidcamera/.settings/org.eclipse.jdt.core.prefs
+0
-4
AndroidManifest.xml
samples/android/tutorial-0-androidcamera/AndroidManifest.xml
+0
-34
CMakeLists.txt
samples/android/tutorial-0-androidcamera/CMakeLists.txt
+0
-7
icon.png
...es/android/tutorial-0-androidcamera/res/drawable/icon.png
+0
-0
strings.xml
...s/android/tutorial-0-androidcamera/res/values/strings.xml
+0
-4
Sample0Base.java
...dcamera/src/org/opencv/samples/tutorial0/Sample0Base.java
+0
-53
Sample0View.java
...dcamera/src/org/opencv/samples/tutorial0/Sample0View.java
+0
-92
SampleViewBase.java
...mera/src/org/opencv/samples/tutorial0/SampleViewBase.java
+0
-232
No files found.
samples/android/CMakeLists.txt
View file @
60a98aa5
...
...
@@ -11,7 +11,6 @@ add_subdirectory(face-detection)
add_subdirectory
(
image-manipulations
)
add_subdirectory
(
color-blob-detection
)
add_subdirectory
(
tutorial-0-androidcamera
)
add_subdirectory
(
tutorial-1-addopencv
)
add_subdirectory
(
tutorial-2-opencvcamera
)
add_subdirectory
(
tutorial-3-native
)
...
...
samples/android/tutorial-0-androidcamera/.classpath
deleted
100644 → 0
View file @
677443f3
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry
kind=
"con"
path=
"com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"
/>
<classpathentry
exported=
"true"
kind=
"con"
path=
"com.android.ide.eclipse.adt.LIBRARIES"
/>
<classpathentry
kind=
"src"
path=
"src"
/>
<classpathentry
kind=
"src"
path=
"gen"
/>
<classpathentry
kind=
"output"
path=
"bin/classes"
/>
</classpath>
samples/android/tutorial-0-androidcamera/.project
deleted
100644 → 0
View file @
677443f3
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>
OpenCV Tutorial 0 - Android Camera
</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>
com.android.ide.eclipse.adt.ResourceManagerBuilder
</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>
com.android.ide.eclipse.adt.PreCompilerBuilder
</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>
org.eclipse.jdt.core.javabuilder
</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>
com.android.ide.eclipse.adt.ApkBuilder
</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>
com.android.ide.eclipse.adt.AndroidNature
</nature>
<nature>
org.eclipse.jdt.core.javanature
</nature>
</natures>
</projectDescription>
samples/android/tutorial-0-androidcamera/.settings/org.eclipse.jdt.core.prefs
deleted
100644 → 0
View file @
677443f3
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.source=1.6
samples/android/tutorial-0-androidcamera/AndroidManifest.xml
deleted
100644 → 0
View file @
677443f3
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"org.opencv.samples.tutorial0"
android:versionCode=
"21"
android:versionName=
"2.1"
>
<application
android:label=
"@string/app_name"
android:icon=
"@drawable/icon"
>
<activity
android:name=
"Sample0Base"
android:label=
"@string/app_name"
android:screenOrientation=
"landscape"
android:configChanges=
"keyboardHidden|orientation"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</application>
<supports-screens
android:resizeable=
"true"
android:smallScreens=
"true"
android:normalScreens=
"true"
android:largeScreens=
"true"
android:anyDensity=
"true"
/>
<uses-sdk
android:minSdkVersion=
"8"
/>
<uses-permission
android:name=
"android.permission.CAMERA"
/>
<uses-feature
android:name=
"android.hardware.camera"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.camera.autofocus"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.camera.front"
android:required=
"false"
/>
<uses-feature
android:name=
"android.hardware.camera.front.autofocus"
android:required=
"false"
/>
</manifest>
samples/android/tutorial-0-androidcamera/CMakeLists.txt
deleted
100644 → 0
View file @
677443f3
set
(
sample example-tutorial-0-androidcamera
)
add_android_project
(
${
sample
}
"
${
CMAKE_CURRENT_SOURCE_DIR
}
"
SDK_TARGET 11
${
ANDROID_SDK_TARGET
}
)
if
(
TARGET
${
sample
}
)
add_dependencies
(
opencv_android_examples
${
sample
}
)
endif
()
samples/android/tutorial-0-androidcamera/res/drawable/icon.png
deleted
100644 → 0
View file @
677443f3
1.95 KB
samples/android/tutorial-0-androidcamera/res/values/strings.xml
deleted
100644 → 0
View file @
677443f3
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
name=
"app_name"
>
OCV T0 Android Camera
</string>
</resources>
samples/android/tutorial-0-androidcamera/src/org/opencv/samples/tutorial0/Sample0Base.java
deleted
100644 → 0
View file @
677443f3
package
org
.
opencv
.
samples
.
tutorial0
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.content.DialogInterface
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.Window
;
public
class
Sample0Base
extends
Activity
{
private
static
final
String
TAG
=
"OCVSample::Activity"
;
private
Sample0View
mView
;
public
Sample0Base
()
{
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"called onPause"
);
super
.
onPause
();
mView
.
releaseCamera
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"called onResume"
);
super
.
onResume
();
if
(
!
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
();
}
}
/** Called when the activity is first created. */
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
Log
.
i
(
TAG
,
"called onCreate"
);
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
mView
=
new
Sample0View
(
this
);
setContentView
(
mView
);
}
}
samples/android/tutorial-0-androidcamera/src/org/opencv/samples/tutorial0/Sample0View.java
deleted
100644 → 0
View file @
677443f3
package
org
.
opencv
.
samples
.
tutorial0
;
import
android.content.Context
;
import
android.graphics.Bitmap
;
import
android.util.Log
;
class
Sample0View
extends
SampleViewBase
{
private
static
final
String
TAG
=
"OCVSample::View"
;
public
static
final
int
VIEW_MODE_RGBA
=
0
;
public
static
final
int
VIEW_MODE_GRAY
=
1
;
int
mSize
;
int
[]
mRGBA
;
private
Bitmap
mBitmap
;
private
int
mViewMode
;
public
Sample0View
(
Context
context
)
{
super
(
context
);
mSize
=
0
;
mViewMode
=
VIEW_MODE_RGBA
;
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
@Override
protected
Bitmap
processFrame
(
byte
[]
data
)
{
int
frameSize
=
getFrameWidth
()
*
getFrameHeight
();
int
[]
rgba
=
mRGBA
;
final
int
view_mode
=
mViewMode
;
if
(
view_mode
==
VIEW_MODE_GRAY
)
{
for
(
int
i
=
0
;
i
<
frameSize
;
i
++)
{
int
y
=
(
0xff
&
((
int
)
data
[
i
]));
rgba
[
i
]
=
0xff000000
+
(
y
<<
16
)
+
(
y
<<
8
)
+
y
;
}
}
else
if
(
view_mode
==
VIEW_MODE_RGBA
)
{
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
);
int
y
=
(
0xff
&
((
int
)
data
[
index
]));
int
u
=
(
0xff
&
((
int
)
data
[
supply_index
+
0
]));
int
v
=
(
0xff
&
((
int
)
data
[
supply_index
+
1
]));
y
=
y
<
16
?
16
:
y
;
float
y_conv
=
1.164f
*
(
y
-
16
);
int
r
=
Math
.
round
(
y_conv
+
1.596f
*
(
v
-
128
));
int
g
=
Math
.
round
(
y_conv
-
0.813f
*
(
v
-
128
)
-
0.391f
*
(
u
-
128
));
int
b
=
Math
.
round
(
y_conv
+
2.018f
*
(
u
-
128
));
r
=
r
<
0
?
0
:
(
r
>
255
?
255
:
r
);
g
=
g
<
0
?
0
:
(
g
>
255
?
255
:
g
);
b
=
b
<
0
?
0
:
(
b
>
255
?
255
:
b
);
rgba
[
i
*
getFrameWidth
()
+
j
]
=
0xff000000
+
(
b
<<
16
)
+
(
g
<<
8
)
+
r
;
}
}
}
mBitmap
.
setPixels
(
rgba
,
0
/* offset */
,
getFrameWidth
()
/* stride */
,
0
,
0
,
getFrameWidth
(),
getFrameHeight
());
return
mBitmap
;
}
@Override
protected
void
onPreviewStarted
(
int
previewWidth
,
int
previewHeight
)
{
Log
.
i
(
TAG
,
"called onPreviewStarted("
+
previewWidth
+
", "
+
previewHeight
+
")"
);
/* Create a bitmap that will be used through to calculate the image to */
mBitmap
=
Bitmap
.
createBitmap
(
previewWidth
,
previewHeight
,
Bitmap
.
Config
.
ARGB_8888
);
mRGBA
=
new
int
[
previewWidth
*
previewHeight
];
}
@Override
protected
void
onPreviewStopped
()
{
Log
.
i
(
TAG
,
"called onPreviewStopped"
);
if
(
mBitmap
!=
null
)
{
mBitmap
.
recycle
();
mBitmap
=
null
;
}
if
(
mRGBA
!=
null
)
{
mRGBA
=
null
;
}
}
public
void
setViewMode
(
int
viewMode
)
{
Log
.
i
(
TAG
,
"called setViewMode("
+
viewMode
+
")"
);
mViewMode
=
viewMode
;
}
}
\ No newline at end of file
samples/android/tutorial-0-androidcamera/src/org/opencv/samples/tutorial0/SampleViewBase.java
deleted
100644 → 0
View file @
677443f3
package
org
.
opencv
.
samples
.
tutorial0
;
import
java.io.IOException
;
import
java.util.List
;
import
android.annotation.TargetApi
;
import
android.content.Context
;
import
android.graphics.Bitmap
;
import
android.graphics.Canvas
;
import
android.graphics.ImageFormat
;
import
android.graphics.SurfaceTexture
;
import
android.hardware.Camera
;
import
android.hardware.Camera.PreviewCallback
;
import
android.os.Build
;
import
android.util.Log
;
import
android.view.SurfaceHolder
;
import
android.view.SurfaceView
;
public
abstract
class
SampleViewBase
extends
SurfaceView
implements
SurfaceHolder
.
Callback
,
Runnable
{
private
static
final
String
TAG
=
"OCVSample::BaseView"
;
private
Camera
mCamera
;
private
SurfaceHolder
mHolder
;
private
int
mFrameWidth
;
private
int
mFrameHeight
;
private
byte
[]
mFrame
;
private
volatile
boolean
mThreadRun
;
private
byte
[]
mBuffer
;
private
SurfaceTexture
mSf
;
public
SampleViewBase
(
Context
context
)
{
super
(
context
);
mHolder
=
getHolder
();
mHolder
.
addCallback
(
this
);
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
public
int
getFrameWidth
()
{
return
mFrameWidth
;
}
public
int
getFrameHeight
()
{
return
mFrameHeight
;
}
@TargetApi
(
11
)
public
void
setPreview
()
throws
IOException
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
HONEYCOMB
)
{
mSf
=
new
SurfaceTexture
(
10
);
mCamera
.
setPreviewTexture
(
mSf
);
}
else
mCamera
.
setPreviewDisplay
(
null
);
}
public
boolean
openCamera
()
{
Log
.
i
(
TAG
,
"Opening Camera"
);
mCamera
=
null
;
try
{
mCamera
=
Camera
.
open
();
}
catch
(
Exception
e
){
Log
.
e
(
TAG
,
"Camera is not available (in use or does not exist): "
+
e
.
getLocalizedMessage
());
}
if
(
mCamera
==
null
&&
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
GINGERBREAD
)
{
for
(
int
camIdx
=
0
;
camIdx
<
Camera
.
getNumberOfCameras
();
++
camIdx
)
{
try
{
mCamera
=
Camera
.
open
(
camIdx
);
}
catch
(
RuntimeException
e
)
{
Log
.
e
(
TAG
,
"Camera #"
+
camIdx
+
"failed to open: "
+
e
.
getLocalizedMessage
());
}
}
}
if
(
mCamera
==
null
)
{
Log
.
e
(
TAG
,
"Can't open any camera"
);
return
false
;
}
mCamera
.
setPreviewCallbackWithBuffer
(
new
PreviewCallback
()
{
public
void
onPreviewFrame
(
byte
[]
data
,
Camera
camera
)
{
synchronized
(
SampleViewBase
.
this
)
{
System
.
arraycopy
(
data
,
0
,
mFrame
,
0
,
data
.
length
);
SampleViewBase
.
this
.
notify
();
}
camera
.
addCallbackBuffer
(
mBuffer
);
}
});
return
true
;
}
public
void
releaseCamera
()
{
Log
.
i
(
TAG
,
"Releasing Camera"
);
mThreadRun
=
false
;
synchronized
(
this
)
{
if
(
mCamera
!=
null
)
{
mCamera
.
stopPreview
();
mCamera
.
release
();
mCamera
=
null
;
}
}
onPreviewStopped
();
}
public
synchronized
void
setupCamera
(
int
width
,
int
height
)
{
if
(
mCamera
!=
null
)
{
Log
.
i
(
TAG
,
"Setup Camera - "
+
width
+
"x"
+
height
);
Camera
.
Parameters
params
=
mCamera
.
getParameters
();
List
<
Camera
.
Size
>
sizes
=
params
.
getSupportedPreviewSizes
();
mFrameWidth
=
width
;
mFrameHeight
=
height
;
// selecting optimal camera preview size
{
int
minDiff
=
Integer
.
MAX_VALUE
;
for
(
Camera
.
Size
size
:
sizes
)
{
if
(
Math
.
abs
(
size
.
height
-
height
)
<
minDiff
)
{
mFrameWidth
=
size
.
width
;
mFrameHeight
=
size
.
height
;
minDiff
=
Math
.
abs
(
size
.
height
-
height
);
}
}
}
params
.
setPreviewSize
(
getFrameWidth
(),
getFrameHeight
());
List
<
String
>
FocusModes
=
params
.
getSupportedFocusModes
();
if
(
FocusModes
.
contains
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
))
{
params
.
setFocusMode
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
);
}
mCamera
.
setParameters
(
params
);
/* Now allocate the buffer */
params
=
mCamera
.
getParameters
();
int
size
=
params
.
getPreviewSize
().
width
*
params
.
getPreviewSize
().
height
;
size
=
size
*
ImageFormat
.
getBitsPerPixel
(
params
.
getPreviewFormat
())
/
8
;
mBuffer
=
new
byte
[
size
];
/* The buffer where the current frame will be copied */
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
);
}
/* Now we can start a preview */
mCamera
.
startPreview
();
}
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"called surfaceChanged"
);
// stop preview before making changes
try
{
mCamera
.
stopPreview
();
}
catch
(
Exception
e
){
// ignore: tried to stop a non-existent preview
}
// start preview with new settings
setupCamera
(
width
,
height
);
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"called surfaceCreated"
);
(
new
Thread
(
this
)).
start
();
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"called surfaceDestroyed"
);
}
/* The bitmap returned by this method shall be owned by the child and released in onPreviewStopped() */
protected
abstract
Bitmap
processFrame
(
byte
[]
data
);
/**
* This method is called when the preview process is being started. It is called before the first frame delivered and processFrame is called
* It is called with the width and height parameters of the preview process. It can be used to prepare the data needed during the frame processing.
* @param previewWidth - the width of the preview frames that will be delivered via processFrame
* @param previewHeight - the height of the preview frames that will be delivered via processFrame
*/
protected
abstract
void
onPreviewStarted
(
int
previewWidtd
,
int
previewHeight
);
/**
* This method is called when preview is stopped. When this method is called the preview stopped and all the processing of frames already completed.
* If the Bitmap object returned via processFrame is cached - it is a good time to recycle it.
* Any other resources used during the preview can be released.
*/
protected
abstract
void
onPreviewStopped
();
public
void
run
()
{
mThreadRun
=
true
;
Log
.
i
(
TAG
,
"Started processing thread"
);
while
(
mThreadRun
)
{
Bitmap
bmp
=
null
;
synchronized
(
this
)
{
try
{
this
.
wait
();
if
(!
mThreadRun
)
break
;
bmp
=
processFrame
(
mFrame
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
if
(
bmp
!=
null
)
{
Canvas
canvas
=
mHolder
.
lockCanvas
();
if
(
canvas
!=
null
)
{
canvas
.
drawColor
(
0
,
android
.
graphics
.
PorterDuff
.
Mode
.
CLEAR
);
canvas
.
drawBitmap
(
bmp
,
(
canvas
.
getWidth
()
-
getFrameWidth
())
/
2
,
(
canvas
.
getHeight
()
-
getFrameHeight
())
/
2
,
null
);
mHolder
.
unlockCanvasAndPost
(
canvas
);
}
}
}
Log
.
i
(
TAG
,
"Finished processing thread"
);
}
}
\ No newline at end of file
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