2011-06-17 7 views
5

Planuję napisać aplikację mobilną (iOS i Android), w której przetwarza się wiele obrazów.Czy w tym przypadku uzasadnione jest używanie C/C++ dla kodu cross-io/Android?

Czy to dobre rozwiązanie, aby napisać kod rozpoznawania obrazu w języku C lub C++, aby ponownie go użyć na obu platformach?

Czy istnieje wiele specyficznych dla platformy kodów C/C++, które powodują, że pisanie i utrzymywanie tego jest nieuzasadnione?

Uwaga: Ta aplikacja jest oparta na rozpoznawaniu obrazu, a największa część kodu służy do rozpoznawania obrazu.

Odpowiedz

3

Powiedziałbym tak. Sądzę, że najlepiej używać Androida-NDK, a ponieważ proste C kompiluje się dobrze z OBJ-C, może istnieć wiele kodu powtórnie wykorzystanego między dwiema platformami.

+1

Zgadzam się. Jest to dokładnie to, na co zaprojektowano JNI, a używanie C/C++ pod iOS nie jest problemem, ponieważ obiekty ObjC całkowicie rozumieją API C - i C++ również, jeśli używasz typów plików .mm dla twojego źródła ObjC. – jimkberry

0

Nie mogę mówić do specyfiki biblioteki rozpoznawania obrazów, ale mogę powiedzieć, że prawie wszystkie rzeczywiste interfejsy API dla Androida znajdują się w Javie, a cała obsługa Cocoa Touch jest w ObjC. Może to nie być problemem tylko dla twojej biblioteki, ale gdy tylko potrzebujesz podłączyć się do któregoś z istniejących interfejsów API, będziesz chciał pisać Java lub ObjC.

1

Spróbuj przejrzeć bibliotekę OpenCV. Jest to "biblioteka funkcji programistycznych do wizji komputerowej w czasie rzeczywistym" i zawiera wiele zoptymalizowanych kodów do przetwarzania i rozpoznawania obrazów.

Biblioteka OpenCV z łatwością obsługuje Android-NDK w źródle, here are the instructions, do kompilowania biblioteki OpenCV dla Androida i używania jej w twoich aplikacjach.

Istnieje również projekt OpenCV - iOS, który udostępnia pliki projektu XCode do budowy OpenCV na iPhone'a i iPada.

+0

Thx. Już sprawdziłem i algorytmy, których potrzebuję, nie są zaimplementowane w OpenCV. Ale może to być dobre odniesienie do spojrzenia na :) – zercvb

+0

Co dokładnie zamierzasz "rozpoznać"? –

Powiązane problemy