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.

Bucle de Matlab para recorrer imágenes en una carpeta y transformar cada imagen con Imread en un arreglo.

Quiero recorrer una lista de imágenes en Matlab usando un bucle. Quiero obtener una imagen a la vez y convertirla en una matriz usando la función imread. Luego quiero guardar cada matriz en una variable que sea alfabética y se declare automáticamente en un bucle separado.

Mi problema es que no obtengo el resultado. Si guardo mi imageArray, solo crea una matriz de una imagen. Pero necesito que el programa guarde cada matriz en una Variable única como A, B, C, D… y así sucesivamente. No importa cuántas imágenes haya.

Si alguien tiene un consejo para mí, estaría agradecido, gracias 🙂

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para guardar automáticamente cada matriz en una variable con nombres alfabéticos, puedes utilizar un segundo bucle dentro del primer bucle que defina el nombre de la variable basado en la iteración actual del bucle utilizando la función char en Matlab. Aquí tienes un ejemplo de cómo podrías modificar tu código para lograr esto:

    myFolder = '/user/Matlab/projectfile/pictures';
    filePattern = fullfile(myFolder, '*.bmp');
    theFiles = dir(filePattern);
    for k = 1:length(theFiles)
        baseFileName = theFiles(k).name;
        fullFileName = fullfile(theFiles(k).folder, baseFileName);
        imageArray = imread(fullFileName);
        varName = char(64 + k); % crea el nombre de la variable basado en la iteración (comienza con A)
        eval([varName ' = imageArray;']); % crea la variable con el nombre actual y guarda la matriz
    end
    

    La función char agrega un carácter al código ASCII de 64 más el número de iteración actual para crear nombres de variables alfabéticos (por ejemplo, 65 = ‘A’, 66 = ‘B’, etc.). La función eval evalúa la cadena creada concatenando el nombre de la variable y los datos de la matriz para crear la variable con el nombre correspondiente y guardar los datos de la matriz en ella.

    Ten en cuenta que crear variables con nombres generados dinámicamente de esta manera puede dificultar el seguimiento de tus datos si tienes muchas variables, y generalmente no se considera una buena práctica. Es posible que sea mejor almacenar las matrices en una celda o en una estructura en su lugar.

Comments are closed.