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.

Creando una nueva carpeta al modificar una imagen

Se supone que debo escribir una función que lea todas las imágenes de una ruta dada, elimine el canal verde de la imagen y la escriba como una nueva imagen.

Logré resolver cómo eliminar el canal verde y escribir las modificaciones, pero actualmente las imágenes originales se sobrescriben.

¿Cómo modifico el código a continuación para que la función escriba nuevos archivos?

def drop_green_from_path(path):
    for i in path:
        src = cv2.imread(i, cv2.IMREAD_UNCHANGED)
        #
        # asignar el canal verde a ceros
        src[:,:,1] = np.zeros([src.shape[0], src.shape[1]])

    # guardar imagen
    cv2.imwrite(i, src)

# se cambiará más adelante para ser más global, por ahora es una prueba en mi computadora portátil
DATA_IMAGES_PATHS = glob.glob('../data/train/train-1-0/*.png')
drop_green_from_path(DATA_IMAGES_PATHS)
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para modificar el código y escribir nuevos archivos, puedes cambiar los nombres de archivo de salida añadiendo un sufijo o prefijo a los nombres de archivo originales. Una manera de hacer esto es utilizando las funciones de manipulación de rutas y nombres de archivos de la librería os.

    Aquí tienes una versión actualizada de la función que añade “_no_green” a los nombres de archivo:

    import os
    
    def drop_green_from_path(path):
        for i in path:
            src = cv2.imread(i,cv2.IMREAD_UNCHANGED)
    
            # asignar el canal verde a ceros
            src[:,:,1] = np.zeros([src.shape[0], src.shape[1]])
    
            # crear un nuevo nombre de archivo con el sufijo "_no_green"
            dir_name, file_name = os.path.split(i)
            new_file_name = os.path.join(dir_name, file_name.replace(".png", "_no_green.png"))
    
            # guardar la imagen modificada en el nuevo archivo
            cv2.imwrite(new_file_name, src)
    

    Esta versión de la función guardará las imágenes modificadas con el sufijo “_no_green” en el mismo directorio que las imágenes originales. Puedes modificar el código en la línea new_file_name para cambiar el sufijo o el prefijo según lo desees.

Comments are closed.