如何让利用Python将图像(JPG, PNG)转换为CSV

596 阅读1分钟

给定一个图片为.png.jpeg 文件。如何在Python中把它转换为CSV文件?

示例图片

使用以下步骤将图片转换为CSV文件。

  1. 将图像读成一个PIL.Image 对象。
  2. PIL.Image 对象转换为一个三维NumPy数组,其尺寸为行、列和RGB值。
  3. 将三维NumPy数组转换为二维列表,将RGB值折叠成一个单一的值(例如,一个字符串表示)。
  4. 使用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] 代表该像素处的白色。