MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Odczytywanie danych z MongoDB (gridfs) za pomocą sterownika Matlab i Java

Nigdy nie odpowiadałem na żadne pytanie na forum, ale wiele zyskałem, zwłaszcza na stackoverflow, więc pomyślałem, że muszę przynajmniej raz coś oddać. Ponieważ powyższy problem nękał mnie teraz przez prawie dwa dni i w końcu poskładałem rozwiązanie, pomyślałem, że to dobry temat, aby dać coś społeczności.

Miałem ten sam problem z pobieraniem obrazu (.png) z MongoDB/GridFS ze sterownikiem Java. Najpierw, jak opisano powyżej, musisz pobrać obiekt Java pliku:

    import com.mongodb.*;
    import com.mongodb.gridfs.*;

    mongoClient = MongoClient('server_name',27017);
    db = mongoClient.getDB('database_name');
    imgData = GridFS(db,'image_data');

Powyższa część kodu pobiera kolekcję z danymi obrazu. Następnie można pobrać obiekt Java z danymi obrazu:

    javaIObj = imgData.findOne('image_name.png');

Teraz ByteArrayOutputStream jest potrzebny, gdzie strumień danych może być przesyłany potokiem zamiast pliku:

    import java.io.ByteArrayOutputStream;

    baos = ByteArrayOutputStream();
    javaIObj.writeTo(baos);

Strumień wyjściowy musi zostać ponownie przesłany do ByteArrayInputStream, którego można użyć do skonstruowania obiektu ImageIO:

    import java.io.ByteArrayInputStream;
    import javax.imageio.ImageIO;    

    bais = ByteArrayInputStream(baos.toByteArray());
    jbi = ImageIO.read(bais);

Teraz rzeczywisty obraz Matlaba jako macierz można pobrać i wyświetlić:

    nrows = jbi.getHeight; ncols = jbi.getWidth;
    data = jbi.getData.getPixels(0,0,ncols,nrows,[]);
    matImg = reshape(data,ncols,nrows)';

    imagesc(matImg);

Nie wiem, czy to idealne rozwiązanie, ale mi się udało.

Pozdrawiam!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pojawia się błąd, błąd:nie można połączyć się z serwerem 127.0.0.1 shell/mongo.js i podczas próby uruchomienia mongodb na mac osx lion

  2. Jak usunąć kolumnę z kolekcji podrzędnej

  3. Śmiesznie powolne zapytanie mongoDB dotyczące małej kolekcji w prostej, ale dużej bazie danych

  4. Wyszukiwanie agregujące mongoDB na zagnieżdżonej tablicy obiektów

  5. MongoDB $objectToArray