Szukaj…


Uwagi

Biblioteki Open CV można znaleźć w Internecie za pomocą wyszukiwarki.

The Gotchas :

  • Jeśli obniżysz platformę docelową poniżej KitKat, niektóre biblioteki OpenCV przestaną działać, w szczególności klasy związane z org.opencv.android.Camera2Renderer i innymi powiązanymi klasami. Prawdopodobnie można to obejść, po prostu usuwając odpowiednie pliki .java OpenCV.
  • Jeśli podniesiesz platformę docelową do Lollipop lub wyższej, mój przykład ładowania pliku może nie działać, ponieważ marne jest używanie bezwzględnych ścieżek plików. Być może trzeba zmienić przykład, aby załadować plik z galerii lub z innego miejsca. Istnieje wiele przykładów.

Instrukcje

Testowany z AS v1.4.1, ale powinien również działać z nowszymi wersjami.

  1. Utwórz nowy projekt Android Studio za pomocą kreatora projektu (Menu: / Plik / Nowy projekt):

    • Nazwij to „ cvtest1
    • Współczynnik kształtu: API 19, Android 4.4 (KitKat)
    • Puste działanie o nazwie MainActivity

    Powinieneś mieć katalog cvtest1, w którym jest przechowywany ten projekt. (pasek tytułu studia Android pokazuje, gdzie jest cvtest1 po otwarciu projektu)

  1. Sprawdź, czy aplikacja działa poprawnie. Spróbuj zmienić coś takiego jak tekst „Hello World”, aby potwierdzić, że cykl kompilacji / testowania jest dla Ciebie odpowiedni. (Testuję z emulatorem urządzenia API 19).

  2. Pobierz pakiet OpenCV dla Androida v3.1.0 i rozpakuj go gdzieś w katalogu tymczasowym. (Upewnij się, że jest to pakiet specjalnie dla Androida, a nie tylko pakiet OpenCV dla Java.) Nazwie ten katalog „ unzip-dir ”. Poniżej unzip-dir powinieneś mieć katalog sdk / native / libs z podkatalogami rozpoczynającymi się od rzeczy takie jak arm ..., mips ... i x86 ... (po jednym dla każdego typu „architektury” systemu Android)

  3. Z Android Studio zaimportuj OpenCV do swojego projektu jako moduł: Menu: / File / New / Import_Module :

    • Katalog źródłowy: {unzip-dir} / sdk / java
    • Nazwa modułu: Android studio automatycznie wypełnia w tym polu openCVLibrary310 (dokładna nazwa prawdopodobnie nie ma znaczenia, ale pójdziemy z tym).
    • Kliknij dalej . Otrzymasz ekran z trzema polami wyboru i pytaniami o słoiki, biblioteki i opcje importu. Wszystkie trzy należy sprawdzić. Kliknij Zakończ.

    Android Studio rozpocznie importowanie modułu i zostanie wyświetlony plik import-summary.txt , który zawiera listę tego, co nie zostało zaimportowane (głównie pliki javadoc) i inne informacje.
    wprowadź opis zdjęcia tutaj

    Ale pojawia się również komunikat o błędzie informujący, że nie można znaleźć celu z ciągiem mieszania „android-14” ... Dzieje się tak, ponieważ plik build.gradle w pobranym pliku zip OpenCV mówi o kompilacji przy użyciu Androida API w wersji 14, której domyślnie nie masz w Android Studio 1.4.1. wprowadź opis zdjęcia tutaj

  1. Otwórz okno dialogowe struktury projektu ( Menu: / File / Project_Structure ). Wybierz moduł „aplikacja”, kliknij kartę Zależności i dodaj : openCVLibrary310 jako Zależność modułu. Po wybraniu opcji Add / Module_Dependency powinna pojawić się na liście modułów, które można dodać. Będzie się teraz wyświetlać jako zależność, ale w dzienniku zdarzeń pojawi się jeszcze kilka błędów „ nie można znaleźć-android-14” .

  2. Poszukaj w pliku build.gradle swojego modułu aplikacji. W projekcie Android istnieje wiele plików build.gradle. Ten, którego szukasz, znajduje się w katalogu cvtest1 / app, a z widoku projektu wygląda jak build.gradle (Module: app) . Zwróć uwagę na wartości tych czterech pól:

    • compileSDKVersion (moja mówi 23)
    • buildToolsVersion (moja mówi 23.0.2)
    • minSdkVersion (moja mówi 19)
    • targetSdkVersion (moja mówi 23)
  3. Twój projekt ma teraz katalog cvtest1 / OpenCVLibrary310, ale nie jest widoczny z widoku projektu:

wprowadź opis zdjęcia tutaj

Użyj innego narzędzia, na przykład dowolnego menedżera plików, i przejdź do tego katalogu. Możesz także przełączyć widok projektu z Androida na Pliki projektów i możesz znaleźć ten katalog, jak pokazano na tym zrzucie ekranu: wprowadź opis zdjęcia tutaj

Wewnątrz znajduje się kolejny plik build.gradle (jest podświetlony na powyższym zrzucie ekranu). Zaktualizuj ten plik o cztery wartości z kroku 6.

  1. Ponownie zsynchronizuj projekt, a następnie wyczyść go / odbuduj. ( Menu: / Build / Clean_Project ) Powinien on czyścić i kompilować bez błędów. Powinieneś zobaczyć wiele odniesień do : openCVLibrary310 na ekranie 0: Wiadomości .

    wprowadź opis zdjęcia tutaj

    W tym momencie moduł powinien pojawić się w hierarchii projektu jako openCVLibrary310 , podobnie jak aplikacja . (Pamiętaj, że w tym małym menu rozwijanym wróciłem z widoku projektu do widoku Androida ). Powinieneś także zobaczyć dodatkowy plik build.gradle pod „Skryptami stopniowymi”, ale interfejs Android Studio wydaje mi się nieco błędny i czasami nie robi tego od razu. Spróbuj ponownie zsynchronizować, wyczyścić, a nawet ponownie uruchomić Android Studio.

    Powinieneś zobaczyć moduł openCVLibrary310 ze wszystkimi funkcjami OpenCV w Javie, jak na tym zrzucie ekranu:

    wprowadź opis zdjęcia tutaj

  2. Skopiuj katalog {unzip-dir} / sdk / native / libs (i wszystko pod nim) do projektu Android, na cvtest1 / OpenCVLibrary310 / src / main / , a następnie zmień nazwę swojej kopii z libs na jniLibs . Powinieneś teraz mieć katalog cvtest1 / OpenCVLibrary310 / src / main / jniLibs . Ponownie zsynchronizuj projekt, a ten katalog powinien się teraz pojawić w widoku projektu w openCVLibrary310 .

    wprowadź opis zdjęcia tutaj

  3. Przejdź do metody onCreate MainActivity.java i dołącz ten kod:

if (!OpenCVLoader.initDebug()) {
        Log.e(this.getClass().getSimpleName(), "  OpenCVLoader.initDebug(), not working.");
    } else {
        Log.d(this.getClass().getSimpleName(), "  OpenCVLoader.initDebug(), working.");
    }

Następnie uruchom aplikację. Powinieneś zobaczyć takie linie w Monitorze Androida:

wprowadź opis zdjęcia tutaj

(Nie wiem, dlaczego jest tam ta linia z komunikatem o błędzie)

  1. Teraz spróbuj użyć jakiegoś kodu openCV. W poniższym przykładzie skopiowałem plik .jpg do katalogu pamięci podręcznej aplikacji cvtest1 na emulatorze Androida. Poniższy kod ładuje ten obraz, uruchamia algorytm wykrywania sprytnej krawędzi, a następnie zapisuje wyniki z powrotem do pliku .png w tym samym katalogu.
Put this code just below the code from the previous step and alter it to match your own files/directories.
 
    String inputFileName="simm_01";
    String inputExtension = "jpg";
    String inputDir = getCacheDir().getAbsolutePath();  // use the cache directory for i/o
    String outputDir = getCacheDir().getAbsolutePath();
    String outputExtension = "png";
    String inputFilePath = inputDir + File.separator + inputFileName + "." + inputExtension;


    Log.d (this.getClass().getSimpleName(), "loading " + inputFilePath + "...");
    Mat image = Imgcodecs.imread(inputFilePath);  
    Log.d (this.getClass().getSimpleName(), "width of " + inputFileName + ": " + image.width());
    // if width is 0 then it did not read your image.


    // for the canny edge detection algorithm, play with these to see different results
    int threshold1 = 70;
    int threshold2 = 100;

    Mat im_canny = new Mat();  // you have to initialize output image before giving it to the Canny method
    Imgproc.Canny(image, im_canny, threshold1, threshold2);
    String cannyFilename = outputDir + File.separator + inputFileName + "_canny-" + threshold1 + "-" + threshold2 + "." + outputExtension;
    Log.d (this.getClass().getSimpleName(), "Writing " + cannyFilename);
    Imgcodecs.imwrite(cannyFilename, im_canny);
  1. Uruchom aplikację. Twój emulator powinien utworzyć czarno-biały obraz „krawędzi”. Za pomocą Monitora urządzeń z systemem Android można pobrać dane wyjściowe lub napisać działanie, aby je wyświetlić.


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow