es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mover varios archivos en un directorio de Matlab

Usando Matlab, quiero mover las imágenes presentes en el mismo directorio en dos nuevos directorios según su nombre.

En el directorio hay dos conjuntos de nombres de imágenes: ‘neg-0.pgm’, ‘neg-1.pgm’, ‘neg-2.pgm’, … y ‘pos-0.pgm’, ‘pos-1.pgm’, ‘pos-2.pgm’, …

He intentado diferentes funciones para cambiar el directorio de las imágenes pero no he logrado que la operación sea exitosa.

Mi código es:

if not(exist('./CarDataset/TrainImages/PosImages', 'dir'))
    mkdir ./CarDataset/TrainImages PosImages
end

if not(exist('./CarDataset/TrainImages/NegImages', 'dir'))
    mkdir ./CarDataset/TrainImages NegImages
end

trainIm = dir('./CarDataset/TrainImages/*.pgm');

for i = 1:size(trainIm, 1)
    if(strcmp(trainIm(i).name, 'neg*.pgm'))
        save(fullfile('./CarDataset/TrainImages/NegImages', ['neg-' num2str(i) '.pgm']))
    end
end

No obtengo ningún error pero los nuevos directorios siguen vacíos.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hay algunos problemas con el código proporcionado. En primer lugar, la función save se utiliza para guardar variables en un archivo, no para mover archivos entre directorios. La función correcta para mover archivos es movefile. En segundo lugar, la instrucción if dentro del bucle for verifica si el nombre de archivo es igual a la cadena "neg*.pgm", lo cual siempre será falso. En su lugar, deberías usar la función startsWith para verificar si el nombre de archivo comienza con el prefijo "neg-".

    Aquí tienes una versión actualizada del código que debería funcionar:
     

    if not(exist('./CarDataset/TrainImages/PosImages', 'dir'))
        mkdir './CarDataset/TrainImages' PosImages
    end
    
    if not(exist('./CarDataset/TrainImages/NegImages', 'dir'))
        mkdir './CarDataset/TrainImages' NegImages
    end
    
    trainIm = dir('./CarDataset/TrainImages/*.pgm');
    
    for i = 1:size(trainIm, 1)
        if startsWith(trainIm(i).name, 'neg-')
            movefile(fullfile('./CarDataset/TrainImages', trainIm(i).name), './CarDataset/TrainImages/NegImages')
        elseif startsWith(trainIm(i).name, 'pos-')
            movefile(fullfile('./CarDataset/TrainImages', trainIm(i).name), './CarDataset/TrainImages/PosImages')
        end
    end
    

    Este código debería mover todos los archivos que empiezan con "neg-" al directorio NegImages, y todos los archivos que empiezan con "pos-" al directorio PosImages. Ten en cuenta que la función fullfile se utiliza para crear la ruta completa al archivo, incluyendo la ruta del directorio y el nombre del archivo.

Comments are closed.