Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
1ae27eb6
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
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,发现更多精彩内容 >>
提交
1ae27eb6
编写于
10月 15, 2016
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #7476 from abratchik:java.wrapper.fix.3.1
上级
e2e14853
4207ebbc
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
31 addition
and
14 deletion
+31
-14
modules/features2d/misc/java/src/cpp/features2d_manual.hpp
modules/features2d/misc/java/src/cpp/features2d_manual.hpp
+8
-6
modules/java/generator/gen_java.py
modules/java/generator/gen_java.py
+23
-8
未找到文件。
modules/features2d/misc/java/src/cpp/features2d_manual.hpp
浏览文件 @
1ae27eb6
...
...
@@ -89,7 +89,7 @@ public:
//supported: FAST STAR SIFT SURF ORB MSER GFTT HARRIS BRISK AKAZE Grid(XXXX) Pyramid(XXXX) Dynamic(XXXX)
//not supported: SimpleBlob, Dense
CV_WRAP
static
javaFeatureDetector
*
create
(
int
detectorType
)
CV_WRAP
static
Ptr
<
javaFeatureDetector
>
create
(
int
detectorType
)
{
//String name;
if
(
detectorType
>
DYNAMICDETECTOR
)
...
...
@@ -156,7 +156,7 @@ public:
break
;
}
return
new
javaFeatureDetector
(
fd
);
return
makePtr
<
javaFeatureDetector
>
(
fd
);
}
CV_WRAP
void
write
(
const
String
&
fileName
)
const
...
...
@@ -171,10 +171,11 @@ public:
wrapped
->
read
(
fs
.
root
());
}
private:
javaFeatureDetector
(
Ptr
<
FeatureDetector
>
_wrapped
)
:
wrapped
(
_wrapped
)
{}
private:
Ptr
<
FeatureDetector
>
wrapped
;
};
...
...
@@ -222,7 +223,7 @@ public:
//supported SIFT, SURF, ORB, BRIEF, BRISK, FREAK, AKAZE, Opponent(XXXX)
//not supported: Calonder
CV_WRAP
static
javaDescriptorExtractor
*
create
(
int
extractorType
)
CV_WRAP
static
Ptr
<
javaDescriptorExtractor
>
create
(
int
extractorType
)
{
//String name;
...
...
@@ -261,7 +262,7 @@ public:
break
;
}
return
new
javaDescriptorExtractor
(
de
);
return
makePtr
<
javaDescriptorExtractor
>
(
de
);
}
CV_WRAP
void
write
(
const
String
&
fileName
)
const
...
...
@@ -276,10 +277,11 @@ public:
wrapped
->
read
(
fs
.
root
());
}
private:
javaDescriptorExtractor
(
Ptr
<
DescriptorExtractor
>
_wrapped
)
:
wrapped
(
_wrapped
)
{}
private:
Ptr
<
DescriptorExtractor
>
wrapped
;
};
...
...
modules/java/generator/gen_java.py
浏览文件 @
1ae27eb6
...
...
@@ -783,6 +783,7 @@ class ClassInfo(GeneralInfo):
self
.
imports
=
set
()
self
.
props
=
[]
self
.
jname
=
self
.
name
self
.
smart
=
None
# True if class stores Ptr<T>* instead of T* in nativeObj field
self
.
j_code
=
None
# java code stream
self
.
jn_code
=
None
# jni code stream
self
.
cpp_code
=
None
# cpp code stream
...
...
@@ -994,7 +995,7 @@ class JavaWrapperGenerator(object):
if
classinfo
.
base
:
classinfo
.
addImports
(
classinfo
.
base
)
type_dict
[
"Ptr_"
+
name
]
=
\
{
"j_type"
:
name
,
{
"j_type"
:
classinfo
.
j
name
,
"jn_type"
:
"long"
,
"jn_args"
:
((
"__int64"
,
".nativeObj"
),),
"jni_name"
:
"Ptr<"
+
classinfo
.
fullName
(
isCPP
=
True
)
+
">(("
+
classinfo
.
fullName
(
isCPP
=
True
)
+
"*)%(n)s_nativeObj)"
,
"jni_type"
:
"jlong"
,
"suffix"
:
"J"
}
...
...
@@ -1397,10 +1398,10 @@ class JavaWrapperGenerator(object):
elif
fi
.
static
:
cvname
=
fi
.
fullName
(
isCPP
=
True
)
else
:
cvname
=
(
"me->"
if
not
self
.
isSmartClass
(
fi
.
classname
)
else
"(*me)->"
)
+
name
cvname
=
(
"me->"
if
not
self
.
isSmartClass
(
ci
)
else
"(*me)->"
)
+
name
c_prologue
.
append
(
\
"%(cls)s* me = (%(cls)s*) self; //TODO: check for NULL"
\
%
{
"cls"
:
self
.
smartWrap
(
fi
.
classname
,
fi
.
fullClass
(
isCPP
=
True
))}
\
%
{
"cls"
:
self
.
smartWrap
(
ci
,
fi
.
fullClass
(
isCPP
=
True
))}
\
)
cvargs
=
[]
for
a
in
args
:
...
...
@@ -1546,7 +1547,7 @@ JNIEXPORT void JNICALL Java_org_opencv_%(module)s_%(j_cls)s_delete
delete (%(cls)s*) self;
}
"""
%
{
"module"
:
module
.
replace
(
'_'
,
'_1'
),
"cls"
:
self
.
smartWrap
(
ci
.
name
,
ci
.
fullName
(
isCPP
=
True
)),
"j_cls"
:
ci
.
jname
.
replace
(
'_'
,
'_1'
)}
"""
%
{
"module"
:
module
.
replace
(
'_'
,
'_1'
),
"cls"
:
self
.
smartWrap
(
ci
,
ci
.
fullName
(
isCPP
=
True
)),
"j_cls"
:
ci
.
jname
.
replace
(
'_'
,
'_1'
)}
)
def
getClass
(
self
,
classname
):
...
...
@@ -1556,17 +1557,31 @@ JNIEXPORT void JNICALL Java_org_opencv_%(module)s_%(j_cls)s_delete
name
=
classname
or
self
.
Module
return
name
in
self
.
classes
def
isSmartClass
(
self
,
c
lassname
):
def
isSmartClass
(
self
,
c
i
):
'''
Check if class stores Ptr<T>* instead of T* in nativeObj field
'''
return
self
.
isWrapped
(
classname
)
if
ci
.
smart
!=
None
:
return
ci
.
smart
# if parents are smart (we hope) then children are!
# if not we believe the class is smart if it has "create" method
ci
.
smart
=
False
if
ci
.
base
:
ci
.
smart
=
True
else
:
for
fi
in
ci
.
methods
:
if
fi
.
name
==
"create"
:
ci
.
smart
=
True
break
return
ci
.
smart
def
smartWrap
(
self
,
name
,
fullname
):
def
smartWrap
(
self
,
ci
,
fullname
):
'''
Wraps fullname with Ptr<> if needed
'''
if
self
.
isSmartClass
(
name
):
if
self
.
isSmartClass
(
ci
):
return
"Ptr<"
+
fullname
+
">"
return
fullname
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录