给定一个图片为.png
或.jpeg
文件。如何在Python中把它转换为CSV文件?
示例图片
使用以下步骤将图片转换为CSV文件。
- 将图像读成一个
PIL.Image
对象。 - 将
PIL.Image
对象转换为一个三维NumPy数组,其尺寸为行、列和RGB值。 - 将三维NumPy数组转换为二维列表,将RGB值折叠成一个单一的值(例如,一个字符串表示)。
- 使用Python中的正常文件I/O将二维列表写成CSV。
下面是应用这四个步骤的代码,假设图像被存储在一个名为'c++.jpg'
的文件中。
from PIL import Image
import numpy as np
# 1. Read image
img = Image.open('c++.jpg')
# 2. Convert image to NumPy array
arr = np.asarray(img)
print(arr.shape)
# (771, 771, 3)
# 3. Convert 3D array to 2D list of lists
lst = []
for row in arr:
tmp = []
for col in row:
tmp.append(str(col))
lst.append(tmp)
# 4. Save list of lists to CSV
with open('my_file.csv', 'w') as f:
for row in lst:
f.write(','.join(row) + '\n')
请注意,生成的CSV文件看起来是这样的,有超长的行。
每个CSV单元格(列)的值都是该特定像素的RGB值的表示。例如,[255 255 255]
代表该像素处的白色。