Bonjour,
Je me suis inscris sur ce forum pour vous faire part de mon problème, en espérant y trouver des éléments de solutions. Toute aide sera appréciée!
Je dispose d'une base de donnée SQLite. En autres, celle-ci contient des données BLOBS qui correspondent à des images 20*20 encodées en 8 bits, soit 400octets pour chaque canal. En effet, ma base de donnée contient un canal de l'image (YUV) sur chaque colonne. Pour simplifier le problème, je ne m'intéresse pour l'instant qu'au canal Y.
Mon objectif est à terme de convertir ces données BLOBs en un fichier HDF5 (ou LMDB, mais je n'ai trouvé aucunes informations en ce qui concerne ce format).
J'ai également besoin de reconstituer ces données en fichier image pour pouvoir les visualiser, tout ceci, en Python bien évidemment (je travaille avec Python 2.7.11).
Charger les données de la base de données ne semble a priori pas poser de problème:
Mon premier problème se pose à la récupération de ces données BLOBs dans Python, qui les interprète en terme de Buffer, comme en témoigne le bout de code ci-dessous:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 import sqlite3 from pandas.io import sql #Selection de la base de donnee database='dataBase/Background.sqlite' #Selection du canal Y1 instruction2="SELECT cutoutDataY1 FROM 'B_HYPOTHESIS'" try: conn = sqlite3.connect(database) #Creation d'un cursor cur = conn.cursor() cur.execute(instruction2) except: print('*** Requete SQL incorrecte ***')
Je reconnais ne pas avoir compris la documentation Python concernant les Buffers, je suis d'ailleurs preneur de documentation à ce sujet. Idéalement, je souhaiterai en premier lieu obtenir un array de int8, qui me permettent de valider la concomitance de ce que je récupère avec ma base SQL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 In[3]: row = cur.fetchone() In[4]: print type(row) <type 'tuple'> In[5]: print type(row[0]) <type 'buffer'> In[6 ]: print row[0] geklklklkntumcgpvzzxd`eiimomjfmmd\]bgton``bbbfghhbdfhc[[`pmncghfhifdhgaa``_Z\pprfotuupkefea\VUZXXnpqdq|~{qoidYTWVVXXXnooimw}ukmmhVR[[YVSWopqefpxmffhiXR^_WRPUmon^agmgdcehVPYYWUSXpqo\cdc`aabh[Ya_VVY\opoWahb]_cac]cccZZZ\finU[df_aeba\]did\[\agqUVchbcb__efehgjpoonqWXfma`d^conffb`ecntrjntsb_d^akid`]ZXYlts����rhi_`igcXSVTXluq||zxzvtd^dd]VTVVXiuvvtqm{~yjddaZWXXXYfv�ononpqpmkjf_Z]^]^m}nilooonoponmheghho{zb
Quelques informations glanées sur le net suggèrent de passer par des string:
A supposer que cela serve, comment récupérer mes entiers depuis ce str?
Code : Sélectionner tout - Visualiser dans une fenêtre à part blob = str(row[0])
Pour l'instant, je limiterai mes questions à cela. Mes investigations m'ont amené à considérer l'utilisation de la libraire pandas pour encoder mes données en hdf5, mais pour l'instant, je n'en suis pas encore là.
Bonne après-midi et merci à ceux qui se pencheront sur mon problème.
Clément.
Partager