Python 3.5.1 从 PixelAccess 对象到 CSV 数据集

Python 3.5.1 from PixelAcces Objects to CSV dataset

我正在 Python 开展一个项目,内容是拍摄图像,然后使用统计方法分析这些图像。

我是 Python 的(非常)新手,因此我在处理数据时遇到了问题。

我想将我的图像数据从 Python 导出为 csv 格式,以便更容易在另一个程序中进行分析。

因此,如果第一行中的第一个单元格具有 RGB 值 [100,50,200],那么我希望将其转换为 [100050200]。

我想我需要设置一个遍历所有单元格的循环。但是如何做到这一点以及如何使每个 R、G 和 B 值成为 3 位数字 - 我不知道。

from PIL import Image
im=Image.open('path.jpeg')
pixels=list(im.getdata())

然后我迷路了。非常感谢各种帮助。

这是 Michael Staniek 的回答

好的,您的 Raspberry 拍摄了您要转换为 CSV 文件的照片。它的工作方式是这样的:

from PIL import Image
import numpy
img=Image.open(pathtoimage)
imgarray=numpy.array(img)

您使用 PIL 打开文件,其中 returns 一个 img 对象,然后您可以将其转换为 numpy 数组。 数组将是 3 维的,因此它看起来像这样:

array([[[1, 2, 3],
        [1, 2, 3],
        [1, 2, 3]],
       [[1, 2, 3],
        [1, 2, 3],
        [1, 2, 3]],
       [[1, 2, 3],
        [1, 2, 3],
        [1, 2, 3]]])

然后您可以使用以下代码:

for row in imgarray:
    outputstring=""
    for column in row:
        valuestring=""
        for value in column:
            if value < 10:
                valuestring+="00"+str(value)
            elif value < 100:
                valuestring+="0"+str(value)
            else:
                valuestring+=str(value)
       outputstring+=valuestring+";"
    print(outputstring[:-1]) #excluding the last letter, because its a ;

这将为您提供以下结果:

001002003;001002003;001002003 001002003;001002003;001002003 001002003;001002003;001002003