Есть ли недостатки у Android-порта OpenCV? - PullRequest
6 голосов
/ 09 декабря 2010

Раньше я работал с OpenCV в сочетании с Android, и я всегда старался использовать как можно меньше вызовов между моим нативным кодом и java-кодом. Когда я смотрю на OpenCV порт для Android, кажется, что они просто создают функцию-обертку для каждой встроенной функции и вызывают их из Java. Теперь, если я полностью не пойму основную часть оболочек Swig и всю идею этого порта, разве это не будет намного медленнее, чем выполнение реального кодирования в нативном коде? Я заметил, что передача данных между нативным кодом и java-кодом действительно медленная, поэтому я не понимаю, почему это кажется наиболее нормальной вещью в этом порту.

Я использовал его сам, но я решил проигнорировать все обертки и использовать код как есть, и создать свою собственную обертку, используя обычный способ, представленный в учебниках по Android.

Итак, мой вопрос, я просто ошибаюсь по поводу недостатков? Или они на самом деле есть и каково реальное преимущество использования OpenCV в этом? Я знаю, что эти вопросы неформальные, но я надеюсь, что вы, ребята, сможете мне помочь.

1 Ответ

4 голосов
/ 09 декабря 2010

Я не могу дать вам ответ, который вы ищете, но вот что я думаю: есть много примеров слоев JNI, которые обертывают каждую нативную функцию - OpenGL, Android Canvas и т. Д. Вызов через JNI медленнее, чем работаетполностью в нативном коде, но вопрос в том, имеет ли это какое-то значение для конкретного приложения?Я полагаю, что в большинстве случаев это временное наказание игнорируется по сравнению с временем, проведенным внутри нативных функций.Однако я предпочитаю выполнять как можно больше работы в нативном коде для приложений Android, не в основном из-за более быстрого выполнения, а потому, что Java - неловкий язык по сравнению с C и C ++.

...