Использование OpenCV Android портирование - PullRequest
3 голосов
/ 10 мая 2010

Я хочу использовать 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 есть какая-то проблема, но я не понимаю, что и что я должен сделать, чтобы избежать этой проблемы. Некоторые предложения !!!

Спасибо всем

1 Ответ

2 голосов
/ 04 августа 2010

ребята - вы можете попробовать эту ссылку, она портирует современный интерфейс C ++ на opencv. Материал IplImage устарел, но новые версии оставляют оболочки, если вам нужно поддерживать устаревший код.

http://code.google.com/p/android-opencv/

Есть пример приложения для калибровки камеры, вы щелкаете несколько раз, и оно решит проблему с матрицей K.

Примечание: вам понадобится crystax ndk для классов STL, http://www.crystax.net/android/ndk-r4.php

...