diff --git a/modules/java/generator/src/cpp/converters.cpp b/modules/java/generator/src/cpp/converters.cpp index 289a8194f..6bf52c00e 100644 --- a/modules/java/generator/src/cpp/converters.cpp +++ b/modules/java/generator/src/cpp/converters.cpp @@ -219,7 +219,7 @@ void Mat_to_vector_Mat(cv::Mat& mat, std::vector& v_mat) for(int i=0; i a = mat.at< Vec >(i, 0); - long long addr = (((long long)a[0])<<32) | a[1]; + long long addr = (((long long)a[0])<<32) | (a[1]&0xffffffff); Mat& m = *( (Mat*) addr ); v_mat.push_back(m); } diff --git a/modules/java/generator/src/java/utils+Converters.java b/modules/java/generator/src/java/utils+Converters.java index 773484195..49c0844a8 100644 --- a/modules/java/generator/src/java/utils+Converters.java +++ b/modules/java/generator/src/java/utils+Converters.java @@ -262,7 +262,7 @@ public class Converters { int[] buff = new int[count * 2]; m.get(0, 0, buff); for (int i = 0; i < count; i++) { - long addr = (((long) buff[i * 2]) << 32) | ((long) buff[i * 2 + 1]); + long addr = (((long) buff[i * 2]) << 32) | (((long) buff[i * 2 + 1]) & 0xffffffffL); mats.add(new Mat(addr)); } }