Save image properties to CSV using Python

13 Oct, 2021
In this article, we are going to write python scripts to find the height, width, no. of channels in a given image file and save it into CSV format. Below is the implementation for the same using Python3. The prerequisite of this topic is that you have already installed NumPy and OpenCV.
Approach:
First, we will load the required libraries into the python file ( NumPy, OpenCV, etc.).
Create an empty CSV file with the column name only if there is no existing CSV file( Height, Width, Channels, colors, etc.). If the file data.csv does not exist then a new file will be created by the else statement.
Now we will use argparse() function to get the directory path of the images from the user in the command line.
Find the color properties using CV2. 
We will be using image.shape function to find out the Height, Width, Channels of the image.
Then we will calculate the average red, average blue, average green of the image
Then we will write the outputs to the csv file using writerow() function.
Below is the implementation:
Python3
# Required Librariesfrom os import listdirfrom os.path import isfile, joinfrom pathlib import Pathimport numpyimport cv2import argparseimport numpyimport 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 directoryap = 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 CSVmypath = 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()
Output:
Save this code-named main.py.
Shift(Key) + Right Click and Click open PowerShell window here.
python3 main.py --image /path/to/images/folder/:
CSV file output:
Generated Csv File
akshaysingh98088
python-csv
Python-OpenCV
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to Install PIP on Windows ?
Python Classes and Objects
Python | os.path.join() method
Python OOPs Concepts
How to drop one or multiple columns in Pandas Dataframe
Introduction To PYTHON
How To Convert Python Dictionary To JSON?
Check if element exists in list in Python
Python | datetime.timedelta() function
Python | Get unique values from a list