Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
14bc6e3e
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
14bc6e3e
编写于
7月 14, 2011
作者:
A
Andrey Kamaev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Modified Android Samples
上级
08f1f576
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
175 addition
and
126 deletion
+175
-126
modules/java/android/.classpath
modules/java/android/.classpath
+1
-1
modules/java/android/.project
modules/java/android/.project
+1
-1
modules/java/android/AndroidManifest.xml
modules/java/android/AndroidManifest.xml
+3
-3
samples/android/1-java/.project
samples/android/1-java/.project
+2
-2
samples/android/1-java/src/org/opencv/samples/s1/Sample1View.java
...android/1-java/src/org/opencv/samples/s1/Sample1View.java
+58
-117
samples/android/1-java/src/org/opencv/samples/s1/SampleViewBase.java
...roid/1-java/src/org/opencv/samples/s1/SampleViewBase.java
+108
-0
samples/android/4-mixed/.project
samples/android/4-mixed/.project
+2
-2
未找到文件。
modules/java/android/.classpath
浏览文件 @
14bc6e3e
...
...
@@ -3,5 +3,5 @@
<classpathentry
kind=
"src"
path=
"src"
/>
<classpathentry
kind=
"src"
path=
"gen"
/>
<classpathentry
kind=
"con"
path=
"com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"
/>
<classpathentry
kind=
"output"
path=
"bin"
/>
<classpathentry
kind=
"output"
path=
"bin
1
"
/>
</classpath>
modules/java/android/.project
浏览文件 @
14bc6e3e
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>
OpenCV
</name>
<name>
opencv2.3.1
</name>
<comment></comment>
<projects>
</projects>
...
...
modules/java/android/AndroidManifest.xml
浏览文件 @
14bc6e3e
...
...
@@ -3,9 +3,9 @@
package=
"org.opencv"
android:versionCode=
"1"
android:versionName=
"1.0"
>
<application
android:label=
"
OpenCV
"
>
<activity
android:name=
"
OpenCV
"
android:label=
"
OpenCV
"
>
<application
android:label=
"
opencv2.3.1
"
>
<activity
android:name=
"
opencv2.3.1
"
android:label=
"
opencv2.3.1
"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
...
...
samples/android/1-java/.project
浏览文件 @
14bc6e3e
...
...
@@ -32,9 +32,9 @@
</natures>
<linkedResources>
<link>
<name>
OpenCVJavaAPI
_src
</name>
<name>
opencv2.3.1
_src
</name>
<type>
2
</type>
<locationURI>
_android_
OpenCVJavaAPI_583dbd7b
/src
</locationURI>
<locationURI>
_android_
opencv2_3_1_d2471b5d
/src
</locationURI>
</link>
</linkedResources>
</projectDescription>
samples/android/1-java/src/org/opencv/samples/s1/Sample1View.java
浏览文件 @
14bc6e3e
...
...
@@ -2,12 +2,8 @@ package org.opencv.samples.s1;
import
android.content.Context
;
import
android.graphics.Bitmap
;
import
android.graphics.Canvas
;
import
android.hardware.Camera
;
import
android.hardware.Camera.PreviewCallback
;
import
android.util.Log
;
import
android.view.SurfaceHolder
;
import
android.view.SurfaceView
;
import
org.opencv.CvType
;
import
org.opencv.Mat
;
...
...
@@ -18,51 +14,23 @@ import org.opencv.core;
import
org.opencv.imgproc
;
import
org.opencv.android
;
import
java.util.List
;
class
Sample1View
extends
SurfaceView
implements
SurfaceHolder
.
Callback
,
Runnable
{
private
static
final
String
TAG
=
"Sample1Java::View"
;
private
Camera
mCamera
;
private
SurfaceHolder
mHolder
;
private
int
mFrameWidth
;
private
int
mFrameHeight
;
private
byte
[]
mFrame
;
private
boolean
mThreadRun
;
private
Mat
mYuv
;
private
Mat
mRgba
;
private
Mat
mGraySubmat
;
private
Mat
mIntermediateMat
;
class
Sample1View
extends
SampleViewBase
implements
SurfaceHolder
.
Callback
{
Mat
mYuv
;
Mat
mRgba
;
Mat
mGraySubmat
;
Mat
mIntermediateMat
;
public
Sample1View
(
Context
context
)
{
super
(
context
);
mHolder
=
getHolder
();
mHolder
.
addCallback
(
this
);
}
@Override
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
if
(
mCamera
!=
null
)
{
Camera
.
Parameters
params
=
mCamera
.
getParameters
();
List
<
Camera
.
Size
>
sizes
=
params
.
getSupportedPreviewSizes
();
mFrameWidth
=
width
;
mFrameHeight
=
height
;
//selecting optimal camera preview size
{
double
minDiff
=
Double
.
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
(
mFrameWidth
,
mFrameHeight
);
mCamera
.
setParameters
(
params
);
mCamera
.
startPreview
();
super
.
surfaceChanged
(
_holder
,
format
,
width
,
height
);
Log
.
e
(
"SAMP1"
,
"surfaceChanged begin"
);
synchronized
(
this
)
{
Log
.
e
(
"SAMP1"
,
"surfaceChanged sync"
);
// initialize all required Mats before usage to minimize number of auxiliary jni calls
if
(
mYuv
!=
null
)
mYuv
.
dispose
();
mYuv
=
new
Mat
(
mFrameHeight
+
mFrameHeight
/
2
,
mFrameWidth
,
CvType
.
CV_8UC1
);
...
...
@@ -75,36 +43,57 @@ class Sample1View extends SurfaceView implements SurfaceHolder.Callback, Runnabl
if
(
mIntermediateMat
!=
null
)
mIntermediateMat
.
dispose
();
mIntermediateMat
=
new
Mat
(
mFrameHeight
,
mFrameWidth
,
CvType
.
CV_8UC1
);
}
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
mCamera
=
Camera
.
open
();
mCamera
.
setPreviewCallback
(
new
PreviewCallback
()
{
public
void
onPreviewFrame
(
byte
[]
data
,
Camera
camera
)
{
synchronized
(
Sample1View
.
this
)
{
mFrame
=
data
;
Sample1View
.
this
.
notify
();
}
}
}
);
(
new
Thread
(
this
)).
start
();
}
Log
.
e
(
"SAMP1"
,
"surfaceChanged end"
);
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
mThreadRun
=
false
;
if
(
mCamera
!=
null
)
{
synchronized
(
Sample1View
.
this
)
{
mCamera
.
stopPreview
();
mCamera
.
setPreviewCallback
(
null
);
mCamera
.
release
();
mCamera
=
null
;
}
@Override
protected
Bitmap
processFrame
(
byte
[]
data
)
{
Log
.
e
(
"SAMP1"
,
"processFrame begin"
);
mYuv
.
put
(
0
,
0
,
data
);
Sample1Java
a
=
(
Sample1Java
)
getContext
();
switch
(
a
.
viewMode
)
{
case
Sample1Java
.
VIEW_MODE_GRAY
:
imgproc
.
cvtColor
(
mGraySubmat
,
mRgba
,
imgproc
.
CV_GRAY2RGBA
,
4
);
break
;
case
Sample1Java
.
VIEW_MODE_RGBA
:
imgproc
.
cvtColor
(
mYuv
,
mRgba
,
imgproc
.
CV_YUV420i2RGB
,
4
);
core
.
putText
(
mRgba
,
"OpenCV + Android"
,
new
Point
(
10
,
100
),
3
/*CV_FONT_HERSHEY_COMPLEX*/
,
2
,
new
Scalar
(
255
,
0
,
0
,
255
),
3
);
break
;
case
Sample1Java
.
VIEW_MODE_CANNY
:
imgproc
.
Canny
(
mGraySubmat
,
mIntermediateMat
,
80
,
100
);
imgproc
.
cvtColor
(
mIntermediateMat
,
mRgba
,
imgproc
.
CV_GRAY2BGRA
,
4
);
break
;
case
Sample1Java
.
VIEW_MODE_SOBEL
:
imgproc
.
Sobel
(
mGraySubmat
,
mIntermediateMat
,
CvType
.
CV_8U
,
1
,
1
);
core
.
convertScaleAbs
(
mIntermediateMat
,
mIntermediateMat
,
8
);
imgproc
.
cvtColor
(
mIntermediateMat
,
mRgba
,
imgproc
.
CV_GRAY2BGRA
,
4
);
break
;
case
Sample1Java
.
VIEW_MODE_BLUR
:
imgproc
.
cvtColor
(
mYuv
,
mRgba
,
imgproc
.
CV_YUV420i2RGB
,
4
);
imgproc
.
blur
(
mRgba
,
mRgba
,
new
Size
(
15
,
15
));
break
;
}
// Explicitly dispose Mats
Bitmap
bmp
=
Bitmap
.
createBitmap
(
mFrameWidth
,
mFrameHeight
,
Bitmap
.
Config
.
ARGB_8888
);
android
.
MatToBitmap
(
mRgba
,
bmp
);
Log
.
e
(
"SAMP1"
,
"processFrame end"
);
return
bmp
;
}
@Override
public
void
run
()
{
Log
.
e
(
"SAMP1"
,
"run"
);
super
.
run
();
Log
.
e
(
"SAMP1"
,
"run2"
);
// Explicitly release Mats
if
(
mYuv
!=
null
)
{
mYuv
.
dispose
();
mYuv
=
null
;
...
...
@@ -122,52 +111,4 @@ class Sample1View extends SurfaceView implements SurfaceHolder.Callback, Runnabl
mIntermediateMat
=
null
;
}
}
public
void
run
()
{
mThreadRun
=
true
;
Log
.
i
(
TAG
,
"Starting thread"
);
while
(
mThreadRun
)
{
synchronized
(
this
)
{
try
{
this
.
wait
();
mYuv
.
put
(
0
,
0
,
mFrame
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
Sample1Java
a
=
(
Sample1Java
)
getContext
();
switch
(
a
.
viewMode
)
{
case
Sample1Java
.
VIEW_MODE_GRAY
:
imgproc
.
cvtColor
(
mGraySubmat
,
mRgba
,
imgproc
.
CV_GRAY2RGBA
,
4
);
break
;
case
Sample1Java
.
VIEW_MODE_RGBA
:
imgproc
.
cvtColor
(
mYuv
,
mRgba
,
imgproc
.
CV_YUV420i2RGB
,
4
);
core
.
putText
(
mRgba
,
"OpenCV + Android"
,
new
Point
(
10
,
100
),
3
/*CV_FONT_HERSHEY_COMPLEX*/
,
2
,
new
Scalar
(
255
,
0
,
0
,
255
),
3
);
break
;
case
Sample1Java
.
VIEW_MODE_CANNY
:
imgproc
.
Canny
(
mGraySubmat
,
mIntermediateMat
,
80
,
100
);
imgproc
.
cvtColor
(
mIntermediateMat
,
mRgba
,
imgproc
.
CV_GRAY2BGRA
,
4
);
break
;
case
Sample1Java
.
VIEW_MODE_SOBEL
:
imgproc
.
Sobel
(
mGraySubmat
,
mIntermediateMat
,
CvType
.
CV_8U
,
1
,
1
);
core
.
convertScaleAbs
(
mIntermediateMat
,
mIntermediateMat
,
8
);
imgproc
.
cvtColor
(
mIntermediateMat
,
mRgba
,
imgproc
.
CV_GRAY2BGRA
,
4
);
break
;
case
Sample1Java
.
VIEW_MODE_BLUR
:
imgproc
.
cvtColor
(
mYuv
,
mRgba
,
imgproc
.
CV_YUV420i2RGB
,
4
);
imgproc
.
blur
(
mRgba
,
mRgba
,
new
Size
(
15
,
15
));
break
;
}
Bitmap
bmp
=
Bitmap
.
createBitmap
(
mFrameWidth
,
mFrameHeight
,
Bitmap
.
Config
.
ARGB_8888
);
android
.
MatToBitmap
(
mRgba
,
bmp
);
Canvas
canvas
=
mHolder
.
lockCanvas
();
canvas
.
drawBitmap
(
bmp
,
(
canvas
.
getWidth
()-
mFrameWidth
)/
2
,
(
canvas
.
getHeight
()-
mFrameHeight
)/
2
,
null
);
mHolder
.
unlockCanvasAndPost
(
canvas
);
}
}
}
\ No newline at end of file
samples/android/1-java/src/org/opencv/samples/s1/SampleViewBase.java
0 → 100644
浏览文件 @
14bc6e3e
package
org.opencv.samples.s1
;
import
java.util.List
;
import
android.content.Context
;
import
android.graphics.Bitmap
;
import
android.graphics.Canvas
;
import
android.hardware.Camera
;
import
android.hardware.Camera.PreviewCallback
;
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
=
"Sample::ViewBase"
;
private
Camera
mCamera
;
private
SurfaceHolder
mHolder
;
protected
int
mFrameWidth
;
protected
int
mFrameHeight
;
private
byte
[]
mFrame
;
private
boolean
mThreadRun
;
public
SampleViewBase
(
Context
context
)
{
super
(
context
);
mHolder
=
getHolder
();
mHolder
.
addCallback
(
this
);
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
if
(
mCamera
!=
null
)
{
Camera
.
Parameters
params
=
mCamera
.
getParameters
();
List
<
Camera
.
Size
>
sizes
=
params
.
getSupportedPreviewSizes
();
mFrameWidth
=
width
;
mFrameHeight
=
height
;
//selecting optimal camera preview size
{
double
minDiff
=
Double
.
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
(
mFrameWidth
,
mFrameHeight
);
mCamera
.
setParameters
(
params
);
mCamera
.
startPreview
();
}
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
mCamera
=
Camera
.
open
();
mCamera
.
setPreviewCallback
(
new
PreviewCallback
()
{
public
void
onPreviewFrame
(
byte
[]
data
,
Camera
camera
)
{
synchronized
(
SampleViewBase
.
this
)
{
mFrame
=
data
;
Log
.
i
(
"SAMP1"
,
"before notify"
);
SampleViewBase
.
this
.
notify
();
Log
.
i
(
"SAMP1"
,
"after notify"
);
}
}
}
);
(
new
Thread
(
this
)).
start
();
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
mThreadRun
=
false
;
if
(
mCamera
!=
null
)
{
synchronized
(
this
)
{
mCamera
.
stopPreview
();
mCamera
.
setPreviewCallback
(
null
);
mCamera
.
release
();
mCamera
=
null
;
}
}
}
protected
abstract
Bitmap
processFrame
(
byte
[]
data
);
public
void
run
()
{
mThreadRun
=
true
;
Log
.
i
(
TAG
,
"Starting thread"
);
Bitmap
bmp
=
null
;
while
(
mThreadRun
)
{
Log
.
i
(
"SAMP1"
,
"before synchronized"
);
synchronized
(
this
)
{
Log
.
i
(
"SAMP1"
,
"in synchronized"
);
try
{
this
.
wait
();
Log
.
i
(
"SAMP1"
,
"before processFrame"
);
bmp
=
processFrame
(
mFrame
);
Log
.
i
(
"SAMP1"
,
"after processFrame"
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
Canvas
canvas
=
mHolder
.
lockCanvas
();
canvas
.
drawBitmap
(
bmp
,
(
canvas
.
getWidth
()-
mFrameWidth
)/
2
,
(
canvas
.
getHeight
()-
mFrameHeight
)/
2
,
null
);
mHolder
.
unlockCanvasAndPost
(
canvas
);
}
}
}
\ No newline at end of file
samples/android/4-mixed/.project
浏览文件 @
14bc6e3e
...
...
@@ -32,9 +32,9 @@
</natures>
<linkedResources>
<link>
<name>
OpenCVJavaAPI
_src
</name>
<name>
opencv2.3.1
_src
</name>
<type>
2
</type>
<locationURI>
_android_
OpenCVJavaAPI_583dbd7b
/src
</locationURI>
<locationURI>
_android_
opencv2_3_1_d2471b5d
/src
</locationURI>
</link>
</linkedResources>
</projectDescription>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录