Я хочу использовать OpenCV Android-портирование, которое вы можете найти ЗДЕСЬ , чтобы сделать некоторые преобразования изображений для приложения дополненной реальности. Я не обнаружил проблем с настройкой и сборкой библиотеки, не получил ошибки и успешно поместил ее в процесс JNI моего приложения Android: библиотека libopencv.so находится в правильном каталоге "\ libs \ armeabi \" в каталоге моего проекта ,
А теперь проблемы:
1) Сначала я хочу понять, из какой версии исходной библиотеки openCV происходит это портирование. Для меня важно знать, происходит ли это от версии 1.5, 2.0 или 2.1, потому что одни и те же функции очень разные, а другие отсутствуют.
2) Прежде чем начать работу с видео в реальном времени, я бы попробовал выполнить несколько простых операций с одним изображением или сохраненным видео:
JNIEXPORT
jstring
JNICALL
Java_org_examples_testOpenCV_OpenCV_LoadImage(JNIEnv* env, jobject thiz)
{
IplImage* imgIn = cvLoadImage("/sdcard/testimage.jpg", -1);</p>
<pre><code>if (!imgIn) return env->NewStringUTF("Error");
cvReleaseImage( &imgIn );
return env->NewStringUTF("Ok");
}
JNIEXPORT
jstring
JNICALL
Java_balmas_examples_testOpenCV_OpenCV_manageVideo(JNIEnv* env, jobject thiz)
{
CvCapture* capture = cvCaptureFromFile("/sdcard/video_galaxyspica_352x288_15fps.3gp");</p>
<pre><code> if (!capture) return env->NewStringUTF("Error");
return env->NewStringUTF("Ok");
}
В обоих случаях я получаю «Ошибка». Нет проблем с файлами на SDCard, потому что я пытаюсь сделать это:
FILE* file = fopen("/sdcard/video_galaxyspica_352x288_15fps.3gp","w+");</p>
<p>//FILE* file = fopen("/sdcard/testimage.jpg","w+");</p>
<pre><code>if (!file) return env->NewStringUTF("Error");
else {
fflush(file);
fclose(file);
return env->NewStringUTF("OK");
}
и я получаю "ОК".
Я понимаю, что в библиотеке highgui есть какая-то проблема, но я не понимаю, что и что я должен сделать, чтобы избежать этой проблемы.
Некоторые предложения !!!
Спасибо всем