OpenCV 3.1์์ Java ๋ฐ์ธ๋ฉ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
Boost ๋ชจ๋ธ์ ์ ์ฅํ๋ ค๊ณ ํ ๋ ์ฝ์ด ๋คํ๋ฅผ ๋ฐ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์์ฑ๋ Java<->CPP ์ฐ๊ฒฐ์ ์ค๋ฅ๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
JNIEXPORT void JNICALL Java_org_opencv_core_Algorithm_save_10
(JNIEnv* env, jclass , jlong self, jstring filename)
{
static const char method_name[] = "core::save_10()";
try {
LOGD("%s", method_name);
cv::Algorithm* me = (cv::Algorithm*) self; //TODO: check for NULL
const char* utf_filename = env->GetStringUTFChars(filename, 0); String n_filename(utf_filename ? utf_filename : "" ); env->ReleaseStringUTFChars(filename, utf_filename);
me->save( n_filename );
return;
} catch(const std::exception &e) {
throwJavaException(env, &e, method_name);
} catch (...) {
throwJavaException(env, 0, method_name);
}
return;
}
์์ฑ๋ ์ฝ์ด ํ์ผ์ gdb๋ก ๋๋ฒ๊น
ํ๋ฉด cv::Algorithm*
๋ํ ์ ํจํ ํฌ์ธํฐ๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค(NULL์ ์๋). me->save
์ ๋ถํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์์น์ด๋ฉฐ ์คํ ์ถ์ ์ ๋ณด๋ฉด save ๋ฉ์๋์ ๋๋ฌํ๋ ๊ฒ์ผ๋ก ๋ํ๋์ง ์์ต๋๋ค.
StatModel(๊ณ์ธต ๊ตฌ์กฐ์ ๋ค๋ฅธ ํด๋์ค)์์ empty()๋ฅผ ํธ์ถํ๋ฉด ์๋ํ๋ฉฐ ์ฐ๊ฒฐ โโ์ฝ๋๊ฐ ๋ค์๊ณผ ๊ฐ์ด ํฌ์ธํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
Ptr<cv::ml::StatModel>* me = (Ptr<cv::ml::StatModel>*) self; //TODO: check for NULL
bool _retval_ = (*me)->empty( );
์ ์ฅ ๊ตฌํ์ StatModel
ํด๋์ค๋ก ์ด๋ํ๋ฉด ์ ๋๋ก ์๋ํฉ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ Algorithm
๊ตฌํ ๋ฐฉ๋ฒ์ ์๋ํ์ง๋ง ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์์ต๋๋ค.
gdb์์ ์ญ์ถ์ :
#0 0x00007f1498a25cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007f1498a290d8 in __GI_abort () at abort.c:89
#2 0x00007f1498330795 in os::abort(bool) () from /usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so
#3 0x00007f14984cee23 in VMError::report_and_die() () from /usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so
#4 0x00007f1498335fbf in JVM_handle_linux_signal () from /usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so
#5 0x00007f149832c753 in signalHandler(int, siginfo*, void*) () from /usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so
#6 <signal handler called>
#7 0x00007f14902f5510 in ?? ()
#8 0x00007f1461c928e6 in Java_org_opencv_core_Algorithm_save_10 (env=0x7f149000b1f8, self=139726295094592, filename=0x7f14995ef778) at /home/pace/workspace/opencv-3.1.0/debug/modules/java/core.cpp:4272
#9 0x00007f1481015994 in ?? ()
#10 0x00007f14995ef758 in ?? ()
#11 0x00007f1481015727 in ?? ()
#12 0x00007f14810156e2 in ?? ()
#13 0x00007f14995ef718 in ?? ()
#14 0x00007f1464174728 in ?? ()
#15 0x00007f14995ef788 in ?? ()
#16 0x00007f1464178868 in ?? ()
#17 0x0000000000000000 in ?? ()
1๋ ํ... ์ด ๋ฌธ์ ๊ฐ ๊ณง ํด๊ฒฐ๋ ๊น์? ์ด๊ฒ์ ์๋ฐ ๋จธ์ ๋ฌ๋์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
#8524์์ ์์ ๋จ
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
#8524์์ ์์ ๋จ