Path: blob/master/modules/dnn/misc/java/src/cpp/dnn_converters.cpp
16367 views
// This file is part of OpenCV project.1// It is subject to the license terms in the LICENSE file found in the top-level directory2// of this distribution and at http://opencv.org/license.html34// Author: abratchik56#include "dnn_converters.hpp"789void Mat_to_MatShape(cv::Mat& mat, MatShape& matshape)10{11matshape.clear();12CHECK_MAT(mat.type()==CV_32SC1 && mat.cols==1);13matshape = (MatShape) mat;14}1516void MatShape_to_Mat(MatShape& matshape, cv::Mat& mat)17{18mat = cv::Mat(matshape, true);19}2021std::vector<MatShape> List_to_vector_MatShape(JNIEnv* env, jobject list)22{23static jclass juArrayList = ARRAYLIST(env);24jmethodID m_size = LIST_SIZE(env, juArrayList);25jmethodID m_get = LIST_GET(env, juArrayList);2627static jclass jMatOfInt = MATOFINT(env);2829jint len = env->CallIntMethod(list, m_size);30std::vector<MatShape> result;31result.reserve(len);32for (jint i=0; i<len; i++)33{34jobject element = static_cast<jobject>(env->CallObjectMethod(list, m_get, i));35cv::Mat& mat = *((cv::Mat*) GETNATIVEOBJ(env, jMatOfInt, element) );36MatShape matshape = (MatShape) mat;37result.push_back(matshape);38env->DeleteLocalRef(element);39}40return result;41}4243jobject vector_Ptr_Layer_to_List(JNIEnv* env, std::vector<cv::Ptr<cv::dnn::Layer> >& vs)44{45static jclass juArrayList = ARRAYLIST(env);46static jmethodID m_create = CONSTRUCTOR(env, juArrayList);47jmethodID m_add = LIST_ADD(env, juArrayList);4849static jclass jLayerClass = LAYER(env);50static jmethodID m_create_layer = LAYER_CONSTRUCTOR(env, jLayerClass);5152jobject result = env->NewObject(juArrayList, m_create, vs.size());53for (std::vector< cv::Ptr<cv::dnn::Layer> >::iterator it = vs.begin(); it != vs.end(); ++it) {54jobject element = env->NewObject(jLayerClass, m_create_layer, (*it).get());55env->CallBooleanMethod(result, m_add, element);56env->DeleteLocalRef(element);57}58return result;59}6061std::vector<cv::Ptr<cv::dnn::Layer> > List_to_vector_Ptr_Layer(JNIEnv* env, jobject list)62{63static jclass juArrayList = ARRAYLIST(env);64jmethodID m_size = LIST_SIZE(env, juArrayList);65jmethodID m_get = LIST_GET(env, juArrayList);6667static jclass jLayerClass = LAYER(env);6869jint len = env->CallIntMethod(list, m_size);70std::vector< cv::Ptr<cv::dnn::Layer> > result;71result.reserve(len);72for (jint i=0; i<len; i++)73{74jobject element = static_cast<jobject>(env->CallObjectMethod(list, m_get, i));75cv::Ptr<cv::dnn::Layer>* layer_ptr = (cv::Ptr<cv::dnn::Layer>*) GETNATIVEOBJ(env, jLayerClass, element) ;76cv::Ptr<cv::dnn::Layer> layer = *(layer_ptr);77result.push_back(layer);78env->DeleteLocalRef(element);79}80return result;81}828384