Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
72a55a41
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,发现更多精彩内容 >>
提交
72a55a41
编写于
7月 15, 2011
作者:
A
Andrey Kamaev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactored Android sample (1-java)
上级
c3e9d0dd
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
159 addition
and
165 deletion
+159
-165
modules/java/android/.classpath
modules/java/android/.classpath
+1
-1
samples/android/1-java/src/org/opencv/samples/s1/Sample1Java.java
...android/1-java/src/org/opencv/samples/s1/Sample1Java.java
+22
-20
samples/android/1-java/src/org/opencv/samples/s1/Sample1View.java
...android/1-java/src/org/opencv/samples/s1/Sample1View.java
+35
-41
samples/android/1-java/src/org/opencv/samples/s1/SampleViewBase.java
...roid/1-java/src/org/opencv/samples/s1/SampleViewBase.java
+101
-103
未找到文件。
modules/java/android/.classpath
浏览文件 @
72a55a41
...
...
@@ -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=
"
bin1
"
/>
<classpathentry
kind=
"output"
path=
"
cls
"
/>
</classpath>
samples/android/1-java/src/org/opencv/samples/s1/Sample1Java.java
浏览文件 @
72a55a41
...
...
@@ -8,45 +8,47 @@ import android.view.MenuItem;
import
android.view.Window
;
public
class
Sample1Java
extends
Activity
{
private
static
final
String
TAG
=
"Sample1Java
::Activity"
;
private
static
final
String
TAG
=
"Sample
::Activity"
;
public
static
final
int
VIEW_MODE_RGBA
=
0
;
public
static
final
int
VIEW_MODE_GRAY
=
1
;
public
static
final
int
VIEW_MODE_CANNY
=
2
;
public
static
final
int
VIEW_MODE_SOBEL
=
3
;
public
static
final
int
VIEW_MODE_BLUR
=
4
;
public
static
final
int
VIEW_MODE_RGBA
=
0
;
public
static
final
int
VIEW_MODE_GRAY
=
1
;
public
static
final
int
VIEW_MODE_CANNY
=
2
;
public
static
final
int
VIEW_MODE_SOBEL
=
3
;
public
static
final
int
VIEW_MODE_BLUR
=
4
;
private
MenuItem
mItemPreviewRGBA
;
private
MenuItem
mItemPreviewGray
;
private
MenuItem
mItemPreviewCanny
;
private
MenuItem
mItemPreviewSobel
;
private
MenuItem
mItemPreviewBlur
;
private
MenuItem
mItemPreviewRGBA
;
private
MenuItem
mItemPreviewGray
;
private
MenuItem
mItemPreviewCanny
;
private
MenuItem
mItemPreviewSobel
;
private
MenuItem
mItemPreviewBlur
;
public
static
int
viewMode
=
VIEW_MODE_RGBA
;
public
Sample1Java
(){
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
public
static
int
viewMode
=
VIEW_MODE_RGBA
;
public
Sample1Java
()
{
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
/** Called when the activity is first created. */
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
Log
.
i
(
TAG
,
"onCreate"
);
Log
.
i
(
TAG
,
"onCreate"
);
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
setContentView
(
new
Sample1View
(
this
));
}
@Override
public
boolean
onCreateOptionsMenu
(
Menu
menu
)
{
Log
.
i
(
TAG
,
"onCreateOptionsMenu"
);
mItemPreviewRGBA
=
menu
.
add
(
"Preview RGBA"
);
mItemPreviewGray
=
menu
.
add
(
"Preview GRAY"
);
Log
.
i
(
TAG
,
"onCreateOptionsMenu"
);
mItemPreviewRGBA
=
menu
.
add
(
"Preview RGBA"
);
mItemPreviewGray
=
menu
.
add
(
"Preview GRAY"
);
mItemPreviewCanny
=
menu
.
add
(
"Canny"
);
mItemPreviewSobel
=
menu
.
add
(
"Sobel"
);
mItemPreviewBlur
=
menu
.
add
(
"Blur"
);
mItemPreviewBlur
=
menu
.
add
(
"Blur"
);
return
true
;
}
@Override
public
boolean
onOptionsItemSelected
(
MenuItem
item
)
{
Log
.
i
(
TAG
,
"Menu Item selected "
+
item
);
if
(
item
==
mItemPreviewRGBA
)
...
...
samples/android/1-java/src/org/opencv/samples/s1/Sample1View.java
浏览文件 @
72a55a41
...
...
@@ -15,40 +15,32 @@ class Sample1View extends SampleViewBase {
public
Sample1View
(
Context
context
)
{
super
(
context
);
}
@Override
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
super
.
surfaceChanged
(
_holder
,
format
,
width
,
height
);
super
.
surfaceChanged
(
_holder
,
format
,
width
,
height
);
synchronized
(
this
)
{
// initialize all required Mats before usage to minimize number of auxiliary jni calls
if
(
mYuv
!=
null
)
mYuv
.
dispose
();
mYuv
=
new
Mat
(
getFrameHeight
()+
getFrameHeight
()/
2
,
getFrameWidth
(),
CvType
.
CV_8UC1
);
if
(
mRgba
!=
null
)
mRgba
.
dispose
();
mRgba
=
new
Mat
(
getFrameHeight
(),
getFrameWidth
(),
CvType
.
CV_8UC4
);
if
(
mGraySubmat
!=
null
)
mGraySubmat
.
dispose
();
mGraySubmat
=
mYuv
.
submat
(
0
,
getFrameHeight
(),
0
,
getFrameWidth
());
synchronized
(
this
)
{
// initialize Mats before usage
mYuv
=
new
Mat
(
getFrameHeight
()
+
getFrameHeight
()
/
2
,
getFrameWidth
(),
CvType
.
CV_8UC1
);
mGraySubmat
=
mYuv
.
submat
(
0
,
getFrameHeight
(),
0
,
getFrameWidth
());
if
(
mIntermediateMat
!=
null
)
mIntermediateMat
.
dispose
();
mIntermediateMat
=
new
Mat
(
getFrameHeight
(),
getFrameWidth
(),
CvType
.
CV_8UC1
);
}
mRgba
=
new
Mat
();
mIntermediateMat
=
new
Mat
();
}
}
@Override
protected
Bitmap
processFrame
(
byte
[]
data
)
{
mYuv
.
put
(
0
,
0
,
data
);
switch
(
Sample1Java
.
viewMode
)
{
protected
Bitmap
processFrame
(
byte
[]
data
)
{
mYuv
.
put
(
0
,
0
,
data
);
switch
(
Sample1Java
.
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
);
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
);
...
...
@@ -64,32 +56,34 @@ class Sample1View extends SampleViewBase {
imgproc
.
blur
(
mRgba
,
mRgba
,
new
Size
(
15
,
15
));
break
;
}
Bitmap
bmp
=
Bitmap
.
createBitmap
(
getFrameWidth
(),
getFrameHeight
(),
Bitmap
.
Config
.
ARGB_8888
);
android
.
MatToBitmap
(
mRgba
,
bmp
);
return
bmp
;
if
(
android
.
MatToBitmap
(
mRgba
,
bmp
))
return
bmp
;
bmp
.
recycle
();
return
null
;
}
@Override
public
void
run
()
{
super
.
run
();
// Explicitly deallocate Mats
if
(
mYuv
!=
null
)
{
mYuv
.
dispose
();
super
.
run
();
synchronized
(
this
)
{
// Explicitly deallocate Mats
if
(
mYuv
!=
null
)
mYuv
.
dispose
();
if
(
mRgba
!=
null
)
mRgba
.
dispose
();
if
(
mGraySubmat
!=
null
)
mGraySubmat
.
dispose
();
if
(
mIntermediateMat
!=
null
)
mIntermediateMat
.
dispose
();
mYuv
=
null
;
}
if
(
mRgba
!=
null
)
{
mRgba
.
dispose
();
mRgba
=
null
;
}
if
(
mGraySubmat
!=
null
)
{
mGraySubmat
.
dispose
();
mGraySubmat
=
null
;
}
if
(
mIntermediateMat
!=
null
)
{
mIntermediateMat
.
dispose
();
mIntermediateMat
=
null
;
}
}
...
...
samples/android/1-java/src/org/opencv/samples/s1/SampleViewBase.java
浏览文件 @
72a55a41
...
...
@@ -12,110 +12,108 @@ import android.view.SurfaceHolder;
import
android.view.SurfaceView
;
public
abstract
class
SampleViewBase
extends
SurfaceView
implements
SurfaceHolder
.
Callback
,
Runnable
{
private
static
final
String
TAG
=
"SampleViewBase
"
;
private
Camera
mCamera
;
private
SurfaceHolder
mHolder
;
private
int
mFrameWidth
;
private
int
mFrameHeight
;
private
byte
[]
mFrame
;
private
boolean
mThreadRun
;
public
SampleViewBase
(
Context
context
)
{
super
(
context
);
private
static
final
String
TAG
=
"Sample::SurfaceView
"
;
private
Camera
mCamera
;
private
SurfaceHolder
mHolder
;
private
int
mFrameWidth
;
private
int
mFrameHeight
;
private
byte
[]
mFrame
;
private
boolean
mThreadRun
;
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
;
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
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
(
getFrameWidth
(),
getFrameHeight
());
mCamera
.
setParameters
(
params
);
mCamera
.
startPreview
();
}
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
mCamera
=
Camera
.
open
();
mCamera
.
setPreviewCallback
(
new
PreviewCallback
()
{
public
void
onPreviewFrame
(
byte
[]
data
,
Camera
camera
)
{
synchronized
(
SampleViewBase
.
this
)
{
mFrame
=
data
;
SampleViewBase
.
this
.
notify
();
}
}
}
);
(
new
Thread
(
this
)).
start
();
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceDestroyed"
);
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 processing thread"
);
while
(
mThreadRun
)
{
Bitmap
bmp
=
null
;
synchronized
(
this
)
{
try
{
this
.
wait
();
bmp
=
processFrame
(
mFrame
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
if
(
bmp
!=
null
)
{
Canvas
canvas
=
mHolder
.
lockCanvas
();
if
(
canvas
!=
null
){
canvas
.
drawBitmap
(
bmp
,
(
canvas
.
getWidth
()-
getFrameWidth
())/
2
,
(
canvas
.
getHeight
()-
getFrameHeight
())/
2
,
null
);
mHolder
.
unlockCanvasAndPost
(
canvas
);
}
bmp
.
recycle
();
}
}
}
}
public
int
getFrameWidth
()
{
return
mFrameWidth
;
}
public
int
getFrameHeight
()
{
return
mFrameHeight
;
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
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
(
getFrameWidth
(),
getFrameHeight
());
mCamera
.
setParameters
(
params
);
mCamera
.
startPreview
();
}
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
mCamera
=
Camera
.
open
();
mCamera
.
setPreviewCallback
(
new
PreviewCallback
()
{
public
void
onPreviewFrame
(
byte
[]
data
,
Camera
camera
)
{
synchronized
(
SampleViewBase
.
this
)
{
mFrame
=
data
;
SampleViewBase
.
this
.
notify
();
}
}
});
(
new
Thread
(
this
)).
start
();
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceDestroyed"
);
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 processing thread"
);
while
(
mThreadRun
)
{
Bitmap
bmp
=
null
;
synchronized
(
this
)
{
try
{
this
.
wait
();
bmp
=
processFrame
(
mFrame
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
if
(
bmp
!=
null
)
{
Canvas
canvas
=
mHolder
.
lockCanvas
();
if
(
canvas
!=
null
)
{
canvas
.
drawBitmap
(
bmp
,
(
canvas
.
getWidth
()
-
getFrameWidth
())
/
2
,
(
canvas
.
getHeight
()
-
getFrameHeight
())
/
2
,
null
);
mHolder
.
unlockCanvasAndPost
(
canvas
);
}
bmp
.
recycle
();
}
}
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录