2015-07-16 1 views
1

J'ai des images enregistrées dans le bureau. Les données sauvegardées comme suit: 4 dossiers principaux (1,2,3 et 4) chaque dossier a 26 sous-dossiers (ces sous-dossiers représentent la classe d'images (A, B, C, D, .., Z)). Chacun de ces sous-dossiers contient plus de 500 images. Cependant, je cherche un fichier ou un code dans une torche capable de lire ces images. Dans MATLAB je pourrais écrire un code mais ici je le trouve confus. Pourriez-vous s'il vous plaît me conseiller.Lire des images d'un disque local en utilisant torch7 alors que ces images sont sauvegardées dans différents sous-dossiers?

Répondre

1

Ce que vous pouvez faire est d'utiliser Penlight (la bibliothèque is installed lorsque vous installez Torch).

Penlight fournit pl.dir qui facilite la numérisation de fichiers dans des (sous-) dossiers. Par exemple ce que vous pouvez faire est:

local pl = require('pl.import_into')() 
local t = {} 
for i,f in ipairs(pl.dir.getallfiles('/data/foo', '*.jpg')) do 
    t[i] = { f, pl.path.basename(pl.path.dirname(f)) } 
end 

Cela crée une liste de paires (nom de fichier, étiquette class = "A" ou "B" ...). Bien sûr, vous êtes libre de changer le modèle de fichier (*.jpg) ou de l'omettre (dans ce cas, Penlight listera simplement tous les fichiers). Vous pouvez également charger les images à la volée:

t[i] = { image.load(f), pl.path.basename(pl.path.dirname(f)) } 

Ou faire juste après lors de la manipulation t.

+0

Merci beaucoup, je pense, cela fonctionne mais j'ai d'autres questions s'il vous plaît. Quand je charge mes images j'ai reçu ce message (PANIC: erreur non protégée dans l'appel à Lua API (pas assez de mémoire)) Mon nombre de mes images n'est pas si gros que 100.000 images et j'utilise macbook avec 16Go de RAM. –

+0

Dans ce cas, ne chargez pas toutes vos images dans la mémoire, c'est-à-dire, gardez le nom du fichier comme dans le 1er extrait de code ci-dessus et ne chargez un lot d'images que lorsque vous en avez besoin (par ex. – deltheil