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
a32004f9
Commit
a32004f9
authored
Sep 28, 2012
by
Andrey Pavlenko
Committed by
Andrey Kamaev
Oct 23, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adding initial version of a sample with new Camera-View handling design
parent
769f61f8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
319 additions
and
0 deletions
+319
-0
CMakeLists.txt
samples/android/CMakeLists.txt
+2
-0
.classpath
samples/android/camera-preview/.classpath
+8
-0
.project
samples/android/camera-preview/.project
+33
-0
org.eclipse.jdt.core.prefs
...droid/camera-preview/.settings/org.eclipse.jdt.core.prefs
+5
-0
AndroidManifest.xml
samples/android/camera-preview/AndroidManifest.xml
+28
-0
CMakeLists.txt
samples/android/camera-preview/CMakeLists.txt
+6
-0
ic_action_search.png
.../android/camera-preview/res/drawable/ic_action_search.png
+0
-0
ic_launcher.png
samples/android/camera-preview/res/drawable/ic_launcher.png
+0
-0
activity_camera_writer.xml
...roid/camera-preview/res/layout/activity_camera_writer.xml
+13
-0
activity_camera_writer.xml
...ndroid/camera-preview/res/menu/activity_camera_writer.xml
+6
-0
styles.xml
samples/android/camera-preview/res/values-v11/styles.xml
+6
-0
strings.xml
samples/android/camera-preview/res/values/strings.xml
+8
-0
styles.xml
samples/android/camera-preview/res/values/styles.xml
+6
-0
CameraWriterActivity.java
...rc/org/opencv/test/camerawriter/CameraWriterActivity.java
+72
-0
OpenCvCameraBridgeViewBase.java
.../opencv/test/camerawriter/OpenCvCameraBridgeViewBase.java
+0
-0
OpenCvNativeCameraView.java
.../org/opencv/test/camerawriter/OpenCvNativeCameraView.java
+126
-0
No files found.
samples/android/CMakeLists.txt
View file @
a32004f9
...
...
@@ -17,6 +17,8 @@ add_subdirectory(tutorial-2-opencvcamera)
add_subdirectory
(
tutorial-3-native
)
add_subdirectory
(
tutorial-4-mixed
)
add_subdirectory
(
camera-preview
)
#hello-android sample
if
(
HAVE_opencv_highgui
)
ocv_include_modules_recurse
(
opencv_highgui opencv_core
)
...
...
samples/android/camera-preview/.classpath
0 → 100644
View file @
a32004f9
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry
kind=
"src"
path=
"src"
/>
<classpathentry
kind=
"src"
path=
"gen"
/>
<classpathentry
kind=
"con"
path=
"com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"
/>
<classpathentry
kind=
"con"
path=
"com.android.ide.eclipse.adt.LIBRARIES"
/>
<classpathentry
kind=
"output"
path=
"bin/classes"
/>
</classpath>
samples/android/camera-preview/.project
0 → 100644
View file @
a32004f9
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>
CameraWriter
</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/camera-preview/.settings/org.eclipse.jdt.core.prefs
0 → 100644
View file @
a32004f9
#Wed Jun 29 04:36:40 MSD 2011
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.source=1.5
samples/android/camera-preview/AndroidManifest.xml
0 → 100644
View file @
a32004f9
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"org.opencv.test.camerawriter"
android:versionCode=
"1"
android:versionName=
"1.0"
>
<uses-permission
android:name=
"android.permission.CAMERA"
/>
<uses-feature
android:name=
"android.hardware.camera"
/>
<uses-feature
android:name=
"android.hardware.camera.autofocus"
/>
<uses-sdk
android:minSdkVersion=
"8"
/>
<application
android:icon=
"@drawable/ic_launcher"
android:label=
"@string/app_name"
android:theme=
"@style/AppTheme"
>
<activity
android:name=
".CameraWriterActivity"
android:label=
"@string/title_activity_camera_writer"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</application>
</manifest>
\ No newline at end of file
samples/android/camera-preview/CMakeLists.txt
0 → 100644
View file @
a32004f9
set
(
sample example-camera-preview
)
add_android_project
(
${
sample
}
"
${
CMAKE_CURRENT_SOURCE_DIR
}
"
LIBRARY_DEPS
${
OpenCV_BINARY_DIR
}
SDK_TARGET 11
${
ANDROID_SDK_TARGET
}
)
if
(
TARGET
${
sample
}
)
add_dependencies
(
opencv_android_examples
${
sample
}
)
endif
()
samples/android/camera-preview/res/drawable/ic_action_search.png
0 → 100644
View file @
a32004f9
3.05 KB
samples/android/camera-preview/res/drawable/ic_launcher.png
0 → 100644
View file @
a32004f9
2.94 KB
samples/android/camera-preview/res/layout/activity_camera_writer.xml
0 → 100644
View file @
a32004f9
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<view
class=
"org.opencv.test.camerawriter.OpenCvNativeCameraView"
android:id=
"@+id/camera_surface_view"
android:layout_width =
"fill_parent"
android:layout_height=
"fill_parent"
/>
</RelativeLayout>
samples/android/camera-preview/res/menu/activity_camera_writer.xml
0 → 100644
View file @
a32004f9
<menu
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<item
android:id=
"@+id/menu_settings"
android:title=
"@string/menu_settings"
android:orderInCategory=
"100"
android:showAsAction=
"never"
/>
</menu>
samples/android/camera-preview/res/values-v11/styles.xml
0 → 100644
View file @
a32004f9
<resources>
<style
name=
"AppTheme"
parent=
"android:Theme.Holo.Light"
/>
</resources>
\ No newline at end of file
samples/android/camera-preview/res/values/strings.xml
0 → 100644
View file @
a32004f9
<resources>
<string
name=
"app_name"
>
CameraWriter
</string>
<string
name=
"menu_settings"
>
Settings
</string>
<string
name=
"title_activity_camera_writer"
>
CameraWriterActivity
</string>
</resources>
\ No newline at end of file
samples/android/camera-preview/res/values/styles.xml
0 → 100644
View file @
a32004f9
<resources>
<style
name=
"AppTheme"
parent=
"android:Theme.Light"
/>
</resources>
\ No newline at end of file
samples/android/camera-preview/src/org/opencv/test/camerawriter/CameraWriterActivity.java
0 → 100644
View file @
a32004f9
package
org
.
opencv
.
test
.
camerawriter
;
import
org.opencv.android.BaseLoaderCallback
;
import
org.opencv.android.LoaderCallbackInterface
;
import
org.opencv.android.OpenCVLoader
;
import
org.opencv.core.Mat
;
import
org.opencv.test.camerawriter.OpenCvCameraBridgeViewBase.CvCameraViewListener
;
import
android.os.Bundle
;
import
android.app.Activity
;
import
android.util.Log
;
import
android.view.Menu
;
public
class
CameraWriterActivity
extends
Activity
implements
CvCameraViewListener
{
protected
static
final
String
TAG
=
"CameraWriterActivity"
;
private
OpenCvCameraBridgeViewBase
mCameraView
;
private
BaseLoaderCallback
mLoaderCallback
=
new
BaseLoaderCallback
(
this
)
{
@Override
public
void
onManagerConnected
(
int
status
)
{
switch
(
status
)
{
case
LoaderCallbackInterface
.
SUCCESS
:
Log
.
i
(
TAG
,
"OpenCV loaded successfully"
);
// Create and set View
mCameraView
.
setMaxFrameSize
(
640
,
480
);
mCameraView
.
enableView
();
break
;
default
:
super
.
onManagerConnected
(
status
);
break
;
}
}
};
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_camera_writer
);
mCameraView
=
(
OpenCvCameraBridgeViewBase
)
findViewById
(
R
.
id
.
camera_surface_view
);
mCameraView
.
setCvCameraViewListener
(
this
);
OpenCVLoader
.
initAsync
(
OpenCVLoader
.
OPENCV_VERSION_2_4_2
,
this
,
mLoaderCallback
);
}
@Override
public
boolean
onCreateOptionsMenu
(
Menu
menu
)
{
getMenuInflater
().
inflate
(
R
.
menu
.
activity_camera_writer
,
menu
);
return
true
;
}
@Override
public
void
onCameraViewStarted
(
int
width
,
int
height
)
{
// TODO Auto-generated method stub
}
@Override
public
void
onCameraViewStopped
()
{
// TODO Auto-generated method stub
}
@Override
public
Mat
onCameraFrame
(
Mat
inputFrame
)
{
return
inputFrame
;
}
}
samples/android/camera-preview/src/org/opencv/test/camerawriter/OpenCvCameraBridgeViewBase.java
0 → 100644
View file @
a32004f9
This diff is collapsed.
Click to expand it.
samples/android/camera-preview/src/org/opencv/test/camerawriter/OpenCvNativeCameraView.java
0 → 100644
View file @
a32004f9
package
org
.
opencv
.
test
.
camerawriter
;
import
org.opencv.android.Utils
;
import
org.opencv.core.Mat
;
import
org.opencv.core.Size
;
import
org.opencv.highgui.Highgui
;
import
org.opencv.highgui.VideoCapture
;
import
android.content.Context
;
import
android.graphics.Bitmap
;
import
android.graphics.Canvas
;
import
android.util.AttributeSet
;
import
android.util.Log
;
/**
* This class is an implementation of a bridge between SurfaceView and native OpenCV camera.
* Due to the big amount of work done, by the base class this child is only responsible
* for creating camera, destroying camera and delivering frames while camera is enabled
*/
public
class
OpenCvNativeCameraView
extends
OpenCvCameraBridgeViewBase
{
public
static
final
String
TAG
=
"OpenCvNativeCameraView"
;
private
boolean
mStopThread
;
private
Thread
mThread
;
private
VideoCapture
mCamera
;
public
OpenCvNativeCameraView
(
Context
context
,
AttributeSet
attrs
)
{
super
(
context
,
attrs
);
}
@Override
protected
void
connectCamera
(
int
width
,
int
height
)
{
/* 1. We need to instantiate camera
* 2. We need to start thread which will be getting frames
*/
/* First step - initialize camera connection */
initializeCamera
(
getWidth
(),
getHeight
());
/* now we can start update thread */
mThread
=
new
Thread
(
new
CameraWorker
(
getWidth
(),
getHeight
()));
mThread
.
start
();
}
@Override
protected
void
disconnectCamera
()
{
/* 1. We need to stop thread which updating the frames
* 2. Stop camera and release it
*/
try
{
mStopThread
=
true
;
mThread
.
join
();
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
finally
{
mThread
=
null
;
mStopThread
=
false
;
}
/* Now release camera */
releaseCamera
();
}
private
void
initializeCamera
(
int
width
,
int
height
)
{
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
//TODO: improve error handling
java
.
util
.
List
<
Size
>
sizes
=
mCamera
.
getSupportedPreviewSizes
();
/* Select the size that fits surface considering maximum size allowed */
Size
frameSize
=
calculateCameraFrameSize
(
sizes
,
width
,
height
);
double
frameWidth
=
frameSize
.
width
;
double
frameHeight
=
frameSize
.
height
;
mCamera
.
set
(
Highgui
.
CV_CAP_PROP_FRAME_WIDTH
,
frameWidth
);
mCamera
.
set
(
Highgui
.
CV_CAP_PROP_FRAME_HEIGHT
,
frameHeight
);
mFrameWidth
=
(
int
)
frameWidth
;
mFrameHeight
=
(
int
)
frameHeight
;
Log
.
i
(
TAG
,
"Selected camera frame size = ("
+
mFrameWidth
+
", "
+
mFrameHeight
+
")"
);
}
private
void
releaseCamera
()
{
if
(
mCamera
!=
null
)
{
mCamera
.
release
();
}
}
private
class
CameraWorker
implements
Runnable
{
private
Mat
mRgba
=
new
Mat
();
private
int
mWidth
;
private
int
mHeight
;
CameraWorker
(
int
w
,
int
h
)
{
mWidth
=
w
;
mHeight
=
h
;
}
@Override
public
void
run
()
{
Mat
modified
;
do
{
if
(!
mCamera
.
grab
())
{
Log
.
e
(
TAG
,
"Camera frame grab failed"
);
break
;
}
mCamera
.
retrieve
(
mRgba
,
Highgui
.
CV_CAP_ANDROID_COLOR_FRAME_RGBA
);
deliverAndDrawFrame
(
mRgba
);
}
while
(!
mStopThread
);
}
}
}
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