Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
8d1f254d
O
Opencv
项目概览
Greenplum
/
Opencv
9 个月 前同步成功
通知
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,体验更适合开发者的 AI 搜索 >>
提交
8d1f254d
编写于
7月 02, 2021
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
java: force using of 'Ptr<>' for OpenCV classes
backport of commit:
e5841d31
上级
b699fe7a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
21 addition
and
16 deletion
+21
-16
modules/dnn/misc/java/gen_dict.json
modules/dnn/misc/java/gen_dict.json
+1
-1
modules/java/generator/gen_java.py
modules/java/generator/gen_java.py
+20
-15
未找到文件。
modules/dnn/misc/java/gen_dict.json
浏览文件 @
8d1f254d
...
...
@@ -54,7 +54,7 @@
]
],
"jni_name"
:
"(*(
cv::dnn::DictValue*)%(n)s_nativeObj
)"
,
"jni_name"
:
"(*(
*(Ptr<cv::dnn::DictValue>*)%(n)s_nativeObj)
)"
,
"jni_type"
:
"jlong"
,
"suffix"
:
"J"
,
"j_import"
:
"org.opencv.dnn.DictValue"
...
...
modules/java/generator/gen_java.py
浏览文件 @
8d1f254d
...
...
@@ -224,6 +224,9 @@ class ClassInfo(GeneralInfo):
for
m
in
decl
[
2
]:
if
m
.
startswith
(
"="
):
self
.
jname
=
m
[
1
:]
if
m
==
'/Simple'
:
self
.
smart
=
False
self
.
base
=
''
if
decl
[
1
]:
#self.base = re.sub(r"\b"+self.jname+r"\b", "", decl[1].replace(":", "")).strip()
...
...
@@ -370,7 +373,7 @@ class JavaWrapperGenerator(object):
def
clear
(
self
):
self
.
namespaces
=
[
"cv"
]
self
.
classes
=
{
"Mat"
:
ClassInfo
([
'class Mat'
,
''
,
[],
[]
],
self
.
namespaces
)
}
self
.
classes
=
{
"Mat"
:
ClassInfo
([
'class Mat'
,
''
,
[
'/Simple'
],
[]
],
self
.
namespaces
)
}
self
.
module
=
""
self
.
Module
=
""
self
.
ported_func_list
=
[]
...
...
@@ -390,10 +393,15 @@ class JavaWrapperGenerator(object):
if
name
in
type_dict
and
not
classinfo
.
base
:
logging
.
warning
(
'duplicated: %s'
,
classinfo
)
return
if
self
.
isSmartClass
(
classinfo
):
jni_name
=
"*((*(Ptr<"
+
classinfo
.
fullName
(
isCPP
=
True
)
+
">*)%(n)s_nativeObj).get())"
else
:
jni_name
=
"(*("
+
classinfo
.
fullName
(
isCPP
=
True
)
+
"*)%(n)s_nativeObj)"
type_dict
.
setdefault
(
name
,
{}).
update
(
{
"j_type"
:
classinfo
.
jname
,
"jn_type"
:
"long"
,
"jn_args"
:
((
"__int64"
,
".nativeObj"
),),
"jni_name"
:
"(*("
+
classinfo
.
fullName
(
isCPP
=
True
)
+
"*)%(n)s_nativeObj)"
,
"jni_type"
:
"jlong"
,
"jni_name"
:
jni_name
,
"jni_type"
:
"jlong"
,
"suffix"
:
"J"
,
"j_import"
:
"org.opencv.%s.%s"
%
(
self
.
module
,
classinfo
.
jname
)
}
...
...
@@ -401,7 +409,8 @@ class JavaWrapperGenerator(object):
type_dict
.
setdefault
(
name
+
'*'
,
{}).
update
(
{
"j_type"
:
classinfo
.
jname
,
"jn_type"
:
"long"
,
"jn_args"
:
((
"__int64"
,
".nativeObj"
),),
"jni_name"
:
"("
+
classinfo
.
fullName
(
isCPP
=
True
)
+
"*)%(n)s_nativeObj"
,
"jni_type"
:
"jlong"
,
"jni_name"
:
"&("
+
jni_name
+
")"
,
"jni_type"
:
"jlong"
,
"suffix"
:
"J"
,
"j_import"
:
"org.opencv.%s.%s"
%
(
self
.
module
,
classinfo
.
jname
)
}
...
...
@@ -889,7 +898,13 @@ class JavaWrapperGenerator(object):
ret
=
"return env->NewStringUTF(_retval_.c_str());"
default
=
'return env->NewStringUTF("");'
elif
self
.
isWrapped
(
fi
.
ctype
):
# wrapped class:
ret
=
"return (jlong) new %s(_retval_);"
%
self
.
fullTypeName
(
fi
.
ctype
)
ret
=
None
if
fi
.
ctype
in
self
.
classes
:
ret_ci
=
self
.
classes
[
fi
.
ctype
]
if
self
.
isSmartClass
(
ret_ci
):
ret
=
"return (jlong)(new Ptr<%(ctype)s>(new %(ctype)s(_retval_)));"
%
{
'ctype'
:
self
.
fullTypeName
(
fi
.
ctype
)
}
if
ret
is
None
:
ret
=
"return (jlong) new %s(_retval_);"
%
self
.
fullTypeName
(
fi
.
ctype
)
elif
fi
.
ctype
.
startswith
(
'Ptr_'
):
c_prologue
.
append
(
"typedef Ptr<%s> %s;"
%
(
self
.
fullTypeName
(
fi
.
ctype
[
4
:]),
fi
.
ctype
))
ret
=
"return (jlong)(new %(ctype)s(_retval_));"
%
{
'ctype'
:
fi
.
ctype
}
...
...
@@ -1128,17 +1143,7 @@ JNIEXPORT void JNICALL Java_org_opencv_%(module)s_%(j_cls)s_delete
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
or
ci
.
name
==
'Algorithm'
:
ci
.
smart
=
True
else
:
for
fi
in
ci
.
methods
:
if
fi
.
name
==
"create"
:
ci
.
smart
=
True
break
ci
.
smart
=
True
# smart class is not properly handled in case of base/derived classes
return
ci
.
smart
def
smartWrap
(
self
,
ci
,
fullname
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录