Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
a9508d2f
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,发现更多精彩内容 >>
提交
a9508d2f
编写于
7月 15, 2011
作者:
A
Andrey Kamaev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixed android sample
上级
c8a603d8
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
62 addition
and
68 deletion
+62
-68
samples/android/1-java/src/org/opencv/samples/s1/Sample1Java.java
...android/1-java/src/org/opencv/samples/s1/Sample1Java.java
+7
-2
samples/android/1-java/src/org/opencv/samples/s1/Sample1View.java
...android/1-java/src/org/opencv/samples/s1/Sample1View.java
+11
-29
samples/android/1-java/src/org/opencv/samples/s1/SampleViewBase.java
...roid/1-java/src/org/opencv/samples/s1/SampleViewBase.java
+44
-37
未找到文件。
samples/android/1-java/src/org/opencv/samples/s1/Sample1Java.java
浏览文件 @
a9508d2f
...
...
@@ -22,18 +22,23 @@ public class Sample1Java extends Activity {
private
MenuItem
mItemPreviewSobel
;
private
MenuItem
mItemPreviewBlur
;
public
int
viewMode
;
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"
);
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
setContentView
(
new
Sample1View
(
this
));
viewMode
=
VIEW_MODE_RGBA
;
}
public
boolean
onCreateOptionsMenu
(
Menu
menu
)
{
Log
.
i
(
TAG
,
"onCreateOptionsMenu"
);
mItemPreviewRGBA
=
menu
.
add
(
"Preview RGBA"
);
mItemPreviewGray
=
menu
.
add
(
"Preview GRAY"
);
mItemPreviewCanny
=
menu
.
add
(
"Canny"
);
...
...
samples/android/1-java/src/org/opencv/samples/s1/Sample1View.java
浏览文件 @
a9508d2f
package
org.opencv.samples.s1
;
import
org.opencv.*
;
import
android.content.Context
;
import
android.graphics.Bitmap
;
import
android.util.Log
;
import
android.view.SurfaceHolder
;
import
org.opencv.CvType
;
import
org.opencv.Mat
;
import
org.opencv.Point
;
import
org.opencv.Scalar
;
import
org.opencv.Size
;
import
org.opencv.core
;
import
org.opencv.imgproc
;
import
org.opencv.android
;
class
Sample1View
extends
SampleViewBase
implements
SurfaceHolder
.
Callback
{
class
Sample1View
extends
SampleViewBase
{
Mat
mYuv
;
Mat
mRgba
;
Mat
mGraySubmat
;
...
...
@@ -28,35 +19,29 @@ class Sample1View extends SampleViewBase implements SurfaceHolder.Callback {
@Override
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
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
);
mYuv
=
new
Mat
(
getFrameHeight
()+
getFrameHeight
()/
2
,
getFrameWidth
()
,
CvType
.
CV_8UC1
);
if
(
mRgba
!=
null
)
mRgba
.
dispose
();
mRgba
=
new
Mat
(
mFrameHeight
,
mFrameWidth
,
CvType
.
CV_8UC4
);
mRgba
=
new
Mat
(
getFrameHeight
(),
getFrameWidth
()
,
CvType
.
CV_8UC4
);
if
(
mGraySubmat
!=
null
)
mGraySubmat
.
dispose
();
mGraySubmat
=
mYuv
.
submat
(
0
,
mFrameHeight
,
0
,
mFrameWidth
);
mGraySubmat
=
mYuv
.
submat
(
0
,
getFrameHeight
(),
0
,
getFrameWidth
()
);
if
(
mIntermediateMat
!=
null
)
mIntermediateMat
.
dispose
();
mIntermediateMat
=
new
Mat
(
mFrameHeight
,
mFrameWidth
,
CvType
.
CV_8UC1
);
mIntermediateMat
=
new
Mat
(
getFrameHeight
(),
getFrameWidth
()
,
CvType
.
CV_8UC1
);
}
Log
.
e
(
"SAMP1"
,
"surfaceChanged end"
);
}
@Override
protected
Bitmap
processFrame
(
byte
[]
data
)
{
//Log.e("SAMP1", "processFrame begin");
mYuv
.
put
(
0
,
0
,
data
);
Sample1Java
a
=
(
Sample1Java
)
getContext
();
switch
(
a
.
viewMode
)
switch
(
Sample1Java
.
viewMode
)
{
case
Sample1Java
.
VIEW_MODE_GRAY
:
imgproc
.
cvtColor
(
mGraySubmat
,
mRgba
,
imgproc
.
CV_GRAY2RGBA
,
4
);
...
...
@@ -80,20 +65,17 @@ class Sample1View extends SampleViewBase implements SurfaceHolder.Callback {
break
;
}
Bitmap
bmp
=
Bitmap
.
createBitmap
(
mFrameWidth
,
mFrameHeight
,
Bitmap
.
Config
.
ARGB_8888
);
Bitmap
bmp
=
Bitmap
.
createBitmap
(
getFrameWidth
(),
getFrameHeight
()
,
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
// Explicitly
deallocate Mats
if
(
mYuv
!=
null
)
{
mYuv
.
dispose
();
mYuv
=
null
;
...
...
samples/android/1-java/src/org/opencv/samples/s1/SampleViewBase.java
浏览文件 @
a9508d2f
...
...
@@ -12,12 +12,12 @@ 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
static
final
String
TAG
=
"SampleViewBase"
;
private
Camera
mCamera
;
private
SurfaceHolder
mHolder
;
pr
otected
int
mFrameWidth
;
pr
otected
int
mFrameHeight
;
pr
ivate
int
mFrameWidth
;
pr
ivate
int
mFrameHeight
;
private
byte
[]
mFrame
;
private
boolean
mThreadRun
;
...
...
@@ -25,43 +25,52 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
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
)
{
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
();
}
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
(
"SAMP1"
,
"surfaceCreated"
);
Log
.
i
(
TAG
,
"surfaceCreated"
);
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");
}
}
}
...
...
@@ -70,7 +79,7 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
"SAMP1"
,
"surfaceDestroyed"
);
Log
.
i
(
TAG
,
"surfaceDestroyed"
);
mThreadRun
=
false
;
if
(
mCamera
!=
null
)
{
synchronized
(
this
)
{
...
...
@@ -86,28 +95,26 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
public
void
run
()
{
mThreadRun
=
true
;
Log
.
i
(
TAG
,
"Starting thread"
);
Bitmap
bmp
=
null
;
Log
.
i
(
TAG
,
"Starting processing thread"
);
while
(
mThreadRun
)
{
//Log.i("SAMP1", "before synchronized");
Bitmap
bmp
=
null
;
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
();
}
}
if
(
bmp
!=
null
){
if
(
bmp
!=
null
)
{
Canvas
canvas
=
mHolder
.
lockCanvas
();
if
(
canvas
!=
null
){
canvas
.
drawBitmap
(
bmp
,
(
canvas
.
getWidth
()-
mFrameWidth
)/
2
,
(
canvas
.
getHeight
()-
mFrameHeight
)/
2
,
null
);
canvas
.
drawBitmap
(
bmp
,
(
canvas
.
getWidth
()-
getFrameWidth
())/
2
,
(
canvas
.
getHeight
()-
getFrameHeight
()
)/
2
,
null
);
mHolder
.
unlockCanvasAndPost
(
canvas
);
}
bmp
.
recycle
();
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录