Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/modules/dnn/misc/java/src/cpp/dnn_converters.cpp
16367 views
1
// This file is part of OpenCV project.
2
// It is subject to the license terms in the LICENSE file found in the top-level directory
3
// of this distribution and at http://opencv.org/license.html
4
5
// Author: abratchik
6
7
#include "dnn_converters.hpp"
8
9
10
void Mat_to_MatShape(cv::Mat& mat, MatShape& matshape)
11
{
12
matshape.clear();
13
CHECK_MAT(mat.type()==CV_32SC1 && mat.cols==1);
14
matshape = (MatShape) mat;
15
}
16
17
void MatShape_to_Mat(MatShape& matshape, cv::Mat& mat)
18
{
19
mat = cv::Mat(matshape, true);
20
}
21
22
std::vector<MatShape> List_to_vector_MatShape(JNIEnv* env, jobject list)
23
{
24
static jclass juArrayList = ARRAYLIST(env);
25
jmethodID m_size = LIST_SIZE(env, juArrayList);
26
jmethodID m_get = LIST_GET(env, juArrayList);
27
28
static jclass jMatOfInt = MATOFINT(env);
29
30
jint len = env->CallIntMethod(list, m_size);
31
std::vector<MatShape> result;
32
result.reserve(len);
33
for (jint i=0; i<len; i++)
34
{
35
jobject element = static_cast<jobject>(env->CallObjectMethod(list, m_get, i));
36
cv::Mat& mat = *((cv::Mat*) GETNATIVEOBJ(env, jMatOfInt, element) );
37
MatShape matshape = (MatShape) mat;
38
result.push_back(matshape);
39
env->DeleteLocalRef(element);
40
}
41
return result;
42
}
43
44
jobject vector_Ptr_Layer_to_List(JNIEnv* env, std::vector<cv::Ptr<cv::dnn::Layer> >& vs)
45
{
46
static jclass juArrayList = ARRAYLIST(env);
47
static jmethodID m_create = CONSTRUCTOR(env, juArrayList);
48
jmethodID m_add = LIST_ADD(env, juArrayList);
49
50
static jclass jLayerClass = LAYER(env);
51
static jmethodID m_create_layer = LAYER_CONSTRUCTOR(env, jLayerClass);
52
53
jobject result = env->NewObject(juArrayList, m_create, vs.size());
54
for (std::vector< cv::Ptr<cv::dnn::Layer> >::iterator it = vs.begin(); it != vs.end(); ++it) {
55
jobject element = env->NewObject(jLayerClass, m_create_layer, (*it).get());
56
env->CallBooleanMethod(result, m_add, element);
57
env->DeleteLocalRef(element);
58
}
59
return result;
60
}
61
62
std::vector<cv::Ptr<cv::dnn::Layer> > List_to_vector_Ptr_Layer(JNIEnv* env, jobject list)
63
{
64
static jclass juArrayList = ARRAYLIST(env);
65
jmethodID m_size = LIST_SIZE(env, juArrayList);
66
jmethodID m_get = LIST_GET(env, juArrayList);
67
68
static jclass jLayerClass = LAYER(env);
69
70
jint len = env->CallIntMethod(list, m_size);
71
std::vector< cv::Ptr<cv::dnn::Layer> > result;
72
result.reserve(len);
73
for (jint i=0; i<len; i++)
74
{
75
jobject element = static_cast<jobject>(env->CallObjectMethod(list, m_get, i));
76
cv::Ptr<cv::dnn::Layer>* layer_ptr = (cv::Ptr<cv::dnn::Layer>*) GETNATIVEOBJ(env, jLayerClass, element) ;
77
cv::Ptr<cv::dnn::Layer> layer = *(layer_ptr);
78
result.push_back(layer);
79
env->DeleteLocalRef(element);
80
}
81
return result;
82
}
83
84