Cómo encontrar tamaño de matriz bidimensional en JNI

Estoy aquí para obtener sugerencias de usted con respecto a mi problema. Soy una nueva abeja a esto, me quedé atrapado en esto de ayer, pero incapaz de resolverlo. Estoy tratando de encontrar el tamaño de matriz 2d en JNI, pero no estoy recibiendo resultado exitoso. El siguiente código que tengo. Pueden ustedes por favor resolver mi problema.

JNIEXPORT jint JNICALL Java_com_example_imagejoiner_MyJoiner_test(JNIEnv* env, jobject javaThis) { LOGV("test print"); return 1; } JNIEXPORT void JNICALL Java_com_example_imagejoiner_MyJoiner_joinNative(JNIEnv* env, jobject javaThis, jobjectArray jfilePaths, jstring jfinalImagePath, int verticalOverlapPercent, int horizontalOverlapPercent) { const char *finalImagePath = env->GetStringUTFChars(jfinalImagePath, 0); const int imageCount = env->GetArrayLength(jfilePaths); int rows = 1; int columns = 4; Mat imageBuff[rows][columns]; /*for (int i = 0; i < imageCount; i++) { jstring filePath = (jstring) env->GetObjectArrayElement( jfilePaths, i); const char *rawString = env->GetStringUTFChars(filePath, 0); LOGV("reading = %s", rawString); imageBuff[i] = imread(rawString, 1); if(!imageBuff[i].data) { LOGV("failed to read = %s", rawString); } env->ReleaseStringUTFChars(filePath, rawString); }*/ //Creating a 2 dimensional array from the lieaner array int k = 0; for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { jstring filePath = (jstring) env->GetObjectArrayElement( jfilePaths, k); const char *rawString = env->GetStringUTFChars(filePath, 0); LOGV("reading = %s", rawString); imageBuff[i][j] = imread(rawString, 1); if(!imageBuff[i][j].data) { LOGV("failed to read = %s", rawString); } env->ReleaseStringUTFChars(filePath, rawString); k++; } } //Creating a 2 dimensional array from the 2 dimensional array /*for (int i = 0; i < rows; i++) { jstringArray filePath = (jstringArray) env->GetObjectArrayElement( jfilePaths, i); for (int j = 0; j < columns; j++) { const char *rawString = env->GetStringUTFChars(filePath, j); LOGV("reading = %s", rawString); imageBuff[i][j] = imread(rawString, 1); if(!imageBuff[i][j].data) { LOGV("failed to read = %s", rawString); } env->ReleaseStringUTFChars(filePath, rawString); } }*/ 

Suponiendo que jfilePaths es una matriz 2D de cadenas declaradas en Java como una String[][] :

Una matriz 2D es sólo una matriz de objetos donde cada elemento es una matriz de objetos, una para cada fila. Por lo tanto, puede encontrar el recuento de filas obteniendo la longitud de la matriz 2D y el recuento de columnas obteniendo el primer objeto (que será una matriz de objetos que contenga la primera fila de cadenas) y obteniendo la longitud de la misma.

 int rows = env->GetArrayLength(jfilePaths); jobjectArray firstRow = (jobjectArray)(env->GetObjectArrayElement(jfilePaths, 0)); int columns = env->GetArrayLength(firstRow); 

A continuación, puede iterar a través de las filas y columnas de esta manera:

 for(i = 0; i < rows; i++) { jobjectArray currentRow = (jobjectArray)((env->GetObjectArrayElement(jfilePaths, i)); for(j = 0; j < columns; j++) { jstring filePath = (jstring)((env->GetObjectArrayElement(currentRow, j)); const char *rawString = env->GetStringUTFChars(filePath, 0); // do stuff... } } 
  • Android takePicture ha fallado
  • Cambiar la conectividad de Android con Robolectric
  • ¿Cómo usar jarsigner para firmar un apk?
  • El envío de entrada de ANR excedió el tiempo de espera en Android 4.4
  • ¿Cuál es la diferencia entre Contexto y Acitividad?
  • ¿El constructor de la clase privada interna también es privado?
  • Recoja la invocación del método JVM
  • Java.io.IOException: Error ejecutando exec () Directorio de trabajo: null Medio ambiente: null
  • Una implementación insegura de la interfaz X509TrustManager de google
  • Android - convertir la cadena de certificados pkcs12 al objeto de certificado x509 para bks keystore
  • Android Game Development (Programación / Algoritmo) Pregunta
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.