使用Python将图像属性保存到 CSV
在本文中,我们将编写Python脚本来查找高度、宽度、编号。给定图像文件中的通道数并将其保存为 CSV 格式。下面是使用 Python3 的相同实现。本主题的前提是您已经安装了 NumPy 和 OpenCV。
方法:
- 首先,我们将所需的库加载到Python文件中(NumPy、OpenCV 等)。
- 仅当没有现有的 CSV 文件(高度、宽度、通道、颜色等)时,才使用列名创建一个空的 CSV 文件。如果文件 data.csv 不存在,则 else 语句将创建一个新文件。
- 现在我们将使用argparse()函数在命令行中从用户那里获取图像的目录路径。
- 使用 CV2 查找颜色属性。
- 我们将使用image.shape函数来找出图像的高度、宽度、通道。
- 然后我们将计算图像的平均红色,平均蓝色,平均绿色
- 然后我们将使用writerow()函数将输出写入 csv 文件。
下面是实现:
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", "Hieght",
"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", "Hieght",
"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()
输出:
用法:
- 保存这个代号为main.py的文件。
- Shift(Key) + 右键单击并单击此处打开PowerShell窗口。
python3 main.py --image /path/to/images/folder/:
CSV 文件输出: