Skip to content

Commit c6b60e2

Browse files
committed
Merge pull request opencv#17428 from asmorkalov:as/java_smart_constructors
2 parents 740f662 + 821fac1 commit c6b60e2

File tree

3 files changed

+30
-3
lines changed

3 files changed

+30
-3
lines changed

modules/features2d/misc/java/test/BruteForceDescriptorMatcherTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.opencv.core.Scalar;
1313
import org.opencv.core.DMatch;
1414
import org.opencv.features2d.DescriptorMatcher;
15+
import org.opencv.features2d.BFMatcher;
1516
import org.opencv.core.KeyPoint;
1617
import org.opencv.test.OpenCVTestCase;
1718
import org.opencv.test.OpenCVTestRunner;
@@ -93,6 +94,15 @@ protected void setUp() throws Exception {
9394
};
9495
}
9596

97+
// https://github.com/opencv/opencv/issues/11268
98+
public void testConstructor()
99+
{
100+
BFMatcher self_created_matcher = new BFMatcher();
101+
Mat train = new Mat(1, 1, CvType.CV_8U, new Scalar(123));
102+
self_created_matcher.add(Arrays.asList(train));
103+
assertTrue(!self_created_matcher.empty());
104+
}
105+
96106
public void testAdd() {
97107
matcher.add(Arrays.asList(new Mat()));
98108
assertFalse(matcher.empty());

modules/features2d/misc/java/test/FlannBasedDescriptorMatcherTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.opencv.core.Scalar;
1313
import org.opencv.core.DMatch;
1414
import org.opencv.features2d.DescriptorMatcher;
15+
import org.opencv.features2d.FlannBasedMatcher;
1516
import org.opencv.core.KeyPoint;
1617
import org.opencv.test.OpenCVTestCase;
1718
import org.opencv.test.OpenCVTestRunner;
@@ -168,6 +169,15 @@ protected void setUp() throws Exception {
168169
};
169170
}
170171

172+
// https://github.com/opencv/opencv/issues/11268
173+
public void testConstructor()
174+
{
175+
FlannBasedMatcher self_created_matcher = new FlannBasedMatcher();
176+
Mat train = new Mat(1, 1, CvType.CV_8U, new Scalar(123));
177+
self_created_matcher.add(Arrays.asList(train));
178+
assertTrue(!self_created_matcher.empty());
179+
}
180+
171181
public void testAdd() {
172182
matcher.add(Arrays.asList(new Mat()));
173183
assertFalse(matcher.empty());

modules/java/generator/gen_java.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -877,7 +877,10 @@ def gen_func(self, ci, fi, prop_name=''):
877877
ret = ""
878878
default = ""
879879
elif not fi.ctype: # c-tor
880-
ret = "return (jlong) _retval_;"
880+
if self.isSmartClass(ci):
881+
ret = "return (jlong)(new Ptr<%(ctype)s>(_retval_));" % { 'ctype': fi.fullClass(isCPP=True) }
882+
else:
883+
ret = "return (jlong) _retval_;"
881884
elif "v_type" in type_dict[fi.ctype]: # c-tor
882885
if type_dict[fi.ctype]["v_type"] in ("Mat", "vector_Mat"):
883886
ret = "return (jlong) _retval_;"
@@ -920,8 +923,12 @@ def gen_func(self, ci, fi, prop_name=''):
920923
c_epilogue.append("return " + fi.ctype + "_to_List(env, _ret_val_vector_);")
921924
if fi.classname:
922925
if not fi.ctype: # c-tor
923-
retval = fi.fullClass(isCPP=True) + "* _retval_ = "
924-
cvname = "new " + fi.fullClass(isCPP=True)
926+
if self.isSmartClass(ci):
927+
retval = self.smartWrap(ci, fi.fullClass(isCPP=True)) + " _retval_ = "
928+
cvname = "makePtr<" + fi.fullClass(isCPP=True) +">"
929+
else:
930+
retval = fi.fullClass(isCPP=True) + "* _retval_ = "
931+
cvname = "new " + fi.fullClass(isCPP=True)
925932
elif fi.static:
926933
cvname = fi.fullName(isCPP=True)
927934
else:

0 commit comments

Comments
 (0)