Guarde las propiedades de la imagen en CSV usando Python

En este artículo, vamos a escribir secuencias de comandos de python para encontrar la altura, el ancho, el no. de canales en un archivo de imagen determinado y guárdelo en formato CSV. A continuación se muestra la implementación del mismo utilizando Python3. El requisito previo de este tema es que ya haya instalado NumPy y OpenCV .

Acercarse:

  • Primero, cargaremos las bibliotecas requeridas en el archivo python (NumPy, OpenCV, etc.).
  • Cree un archivo CSV vacío con el nombre de la columna solo si no hay un archivo CSV existente (alto, ancho, canales, colores, etc.). Si el archivo data.csv no existe, la instrucción else creará un nuevo archivo.
  • Ahora usaremos la función argparse() para obtener la ruta del directorio de las imágenes del usuario en la línea de comando.
  • Encuentre las propiedades de color usando CV2. 
  • Usaremos la función image.shape para averiguar la altura, el ancho y los canales de la imagen.
  • Luego calcularemos el rojo promedio, el azul promedio, el verde promedio de la imagen
  • Luego escribiremos los resultados en el archivo csv usando la función writerow() .

A continuación se muestra la implementación:

Python3

# Required Libraries
from os import listdir
from os.path import isfile, join
from pathlib import Path
import numpy
import cv2
import argparse
import numpy
import csv
  
# Check whether the CSV 
# exists or not if not then create one.
my_file = Path("csv/details.csv")
  
if my_file.is_file():
    f = open(my_file, "w+")
    with open('csv/details.csv', 'a', newline='') as file:
        writer = csv.writer(file)
          
        writer.writerow(["S.No.", "Name", "Height",
                         "Width", "Channels",
                         "Avg Blue", "Avg Red",
                         "Avg Green"])
    f.close()
    pass
    
else:
    with open('csv/details.csv', 'w', newline = '') as file:
        writer = csv.writer(file)
          
        writer.writerow(["S.No.", "Name", "Height",
                         "Width", "Channels",
                         "Avg Blue", "Avg Red",
                         "Avg Green"])
  
# Argparse function to get
# the path of the image directory
ap = argparse.ArgumentParser()
  
ap.add_argument("-i", "--image", 
                required = True, 
                help = "Path to folder")
  
args = vars(ap.parse_args())
  
# Program to find the
# colors and embed in the CSV
mypath = args["image"]
  
onlyfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
images = numpy.empty(len(onlyfiles), dtype = object)
  
for n in range(0, len(onlyfiles)):
    
    path = join(mypath,onlyfiles[n])
    images[n] = cv2.imread(join(mypath,onlyfiles[n]),
                           cv2.IMREAD_UNCHANGED)
      
    img = cv2.imread(path)
    h,w,c = img.shape
    print(h, w, c)
      
    avg_color_per_row = numpy.average(img, axis = 0)
    avg_color = numpy.average(avg_color_per_row, axis = 0)
      
    with open('csv/details.csv', 'a', newline = '') as file:
        writer = csv.writer(file)
        writer.writerow([n+1, onlyfiles[n], h, w, c, 
                         avg_color[0], avg_color[1],
                         avg_color[2]])
        file.close()

Producción:

Uso:

  • Guarde este main.py con el nombre en código .
  • Mayús (tecla) + clic derecho y clic para abrir la ventana de PowerShell aquí.
python3 main.py --image /path/to/images/folder/:

Salida del archivo CSV:

Archivo CSV generado

Publicación traducida automáticamente

Artículo escrito por idevesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *