Bilddeskriptor vom Typ Mat in Datenbank speichern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Bilddeskriptor vom Typ Mat in Datenbank speichern

    Hallo,
    ich entwickle gerade eine Android-App, welche der Objekterkennung dienen soll. Hierzu möchte ich verschiedene Bilder untersuchen, welche diverse Objekte beinhalten und jeweils die Deskriptoren der erkannten Objekte in einer externen Datenbank speichern. Bei jedem Laden der App sollen dann automatisch die gespeicherten Deskriptoren geladen und für das Matching mit dem über die Kamera aktuell fokussierten Bild herangezogen werden. Als IDE verwende ich Android Studio 2.1.2 und das OpenCV4Android SDK für das Auffinden der Keypoints und das erstellen der Deskriptoren. Zwei Bilder in der App zu Laden und miteinander zu matchen funktioniert schon, allerdings hänge ich an dem Punkt fest, wo es darum geht, die Deskriptoren in der Datenbank zu speichern. Das Problem ist hierbei, dass die Deskriptoren vom Typ Mat sind und ich nicht wirklich weiß, wie ich eine sinnvolle, brauchbare Umwandlung anstelle um hier ein Speichern in der Datenbank zu ermöglichen.

    Java-Quellcode

    1. MatOfKeyPoint keyPoints = new MatOfKeyPoint();
    2. MatOfKeyPoint keyPointsToMatch = new MatOfKeyPoint();
    3. FeatureDetector detector = FeatureDetector.create(detectorID);
    4. detector.detect(greyImage, keyPoints);
    5. detector.detect(greyImageToMatch, keyPointsToMatch);
    6. DescriptorExtractor dExtractor = DescriptorExtractor.create(descriptorID);
    7. Mat descriptors = new Mat();
    8. Mat descriptorsToMatch = new Mat();
    9. dExtractor.compute(greyImage, keyPoints, descriptors);
    10. dExtractor.compute(greyImageToMatch, keyPointsToMatch, descriptorsToMatch);
    Alles anzeigen


    Bei Stackoverflow gibt es bereits einige Beiträge dazu, welche mir allesamt allerdings auch leider nicht wirklich weiter geholfen haben. Vielleicht hat ja hier jemand eine Idee oder bereits schon einmal etwas ähnliches umgesetzt.
  • Versuch es mal als blob zu speichern. Ich hab mir den Source von OpenCV4Android angeschaut und die scheinen auf C++ klassen zuzugreifen. Wie man native Objekte persistiert, puh, noch nie genutzt.

    Das blöde ist nur das die Mat klasse nicht parcable ist, sonst hättest du die vermutlich einfach so persistieren können. Aber vielleicht gehts ja, schonmal probiert das einfach als object in die Datenbank zu schieben?