我在这里向您征求关于我的问题的建议。我是一个新手,昨天开始遇到这个问题,但一直无法解决。 我正在尝试在JNI中查找2d数组大小,但是我没有得到成功的结果。 以下是我拥有的代码。您能否帮忙解决我的问题。
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);
}
}*/