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: