Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
2e772510
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,发现更多精彩内容 >>
提交
2e772510
编写于
11月 10, 2017
作者:
F
Florian Echtler
提交者:
Alexander Alekhin
11月 10, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Merge pull request #10050 from floe/android-studio-3.3.1
Add Android Mat constructor with support for native buffer (#10050)
上级
c6fb9935
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
56 addition
and
0 deletion
+56
-0
modules/core/misc/java/src/java/core+Mat.java
modules/core/misc/java/src/java/core+Mat.java
+18
-0
modules/core/misc/java/test/MatTest.java
modules/core/misc/java/test/MatTest.java
+13
-0
modules/java/generator/src/cpp/Mat.cpp
modules/java/generator/src/cpp/Mat.cpp
+25
-0
未找到文件。
modules/core/misc/java/src/java/core+Mat.java
浏览文件 @
2e772510
package
org.opencv.core
;
package
org.opencv.core
;
import
java.nio.ByteBuffer
;
// C++: class Mat
// C++: class Mat
//javadoc: Mat
//javadoc: Mat
public
class
Mat
{
public
class
Mat
{
...
@@ -39,6 +41,19 @@ public class Mat {
...
@@ -39,6 +41,19 @@ public class Mat {
return
;
return
;
}
}
//
// C++: Mat::Mat(int rows, int cols, int type, void* data)
//
// javadoc: Mat::Mat(rows, cols, type, data)
public
Mat
(
int
rows
,
int
cols
,
int
type
,
ByteBuffer
data
)
{
nativeObj
=
n_Mat
(
rows
,
cols
,
type
,
data
);
return
;
}
//
//
// C++: Mat::Mat(Size size, int type)
// C++: Mat::Mat(Size size, int type)
//
//
...
@@ -1101,6 +1116,9 @@ public class Mat {
...
@@ -1101,6 +1116,9 @@ public class Mat {
// C++: Mat::Mat(int rows, int cols, int type)
// C++: Mat::Mat(int rows, int cols, int type)
private
static
native
long
n_Mat
(
int
rows
,
int
cols
,
int
type
);
private
static
native
long
n_Mat
(
int
rows
,
int
cols
,
int
type
);
// C++: Mat::Mat(int rows, int cols, int type, void* data)
private
static
native
long
n_Mat
(
int
rows
,
int
cols
,
int
type
,
ByteBuffer
data
);
// C++: Mat::Mat(Size size, int type)
// C++: Mat::Mat(Size size, int type)
private
static
native
long
n_Mat
(
double
size_width
,
double
size_height
,
int
type
);
private
static
native
long
n_Mat
(
double
size_width
,
double
size_height
,
int
type
);
...
...
modules/core/misc/java/test/MatTest.java
浏览文件 @
2e772510
package
org.opencv.test.core
;
package
org.opencv.test.core
;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.nio.ByteBuffer
;
import
org.opencv.core.Core
;
import
org.opencv.core.Core
;
import
org.opencv.core.CvException
;
import
org.opencv.core.CvException
;
...
@@ -1001,4 +1002,16 @@ public class MatTest extends OpenCVTestCase {
...
@@ -1001,4 +1002,16 @@ public class MatTest extends OpenCVTestCase {
assertMatEqual
(
truth
,
dst
);
assertMatEqual
(
truth
,
dst
);
}
}
public
void
testMatFromByteBuffer
()
{
ByteBuffer
bbuf
=
ByteBuffer
.
allocateDirect
(
64
*
64
);
bbuf
.
putInt
(
0x01010101
);
Mat
m
=
new
Mat
(
64
,
64
,
CvType
.
CV_8UC1
,
bbuf
);
assertEquals
(
4
,
Core
.
countNonZero
(
m
));
Core
.
add
(
m
,
new
Scalar
(
1
),
m
);
assertEquals
(
4096
,
Core
.
countNonZero
(
m
));
m
.
release
();
assertEquals
(
2
,
bbuf
.
get
(
0
));
assertEquals
(
1
,
bbuf
.
get
(
4095
));
}
}
}
modules/java/generator/src/cpp/Mat.cpp
浏览文件 @
2e772510
...
@@ -51,6 +51,31 @@ JNIEXPORT jlong JNICALL Java_org_opencv_core_Mat_n_1Mat__
...
@@ -51,6 +51,31 @@ JNIEXPORT jlong JNICALL Java_org_opencv_core_Mat_n_1Mat__
//
// Mat::Mat(int rows, int cols, int type, void* data)
//
JNIEXPORT
jlong
JNICALL
Java_org_opencv_core_Mat_n_1Mat__IIILjava_nio_ByteBuffer_2
(
JNIEnv
*
env
,
jclass
,
jint
rows
,
jint
cols
,
jint
type
,
jobject
data
);
JNIEXPORT
jlong
JNICALL
Java_org_opencv_core_Mat_n_1Mat__IIILjava_nio_ByteBuffer_2
(
JNIEnv
*
env
,
jclass
,
jint
rows
,
jint
cols
,
jint
type
,
jobject
data
)
{
static
const
char
method_name
[]
=
"Mat::n_1Mat__IIILByteBuffer()"
;
try
{
LOGD
(
"%s"
,
method_name
);
return
(
jlong
)
new
Mat
(
rows
,
cols
,
type
,
(
void
*
)
env
->
GetDirectBufferAddress
(
data
)
);
}
catch
(
const
std
::
exception
&
e
)
{
throwJavaException
(
env
,
&
e
,
method_name
);
}
catch
(...)
{
throwJavaException
(
env
,
0
,
method_name
);
}
return
0
;
}
//
//
// Mat::Mat(int rows, int cols, int type)
// Mat::Mat(int rows, int cols, int type)
//
//
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录