如何将图像中的像素颜色信息提取为数字并将其存储在CSV文件中?这些数字应该都在一行多列中。如果图像是50*50,那么应该只有1行2500列包含像素颜色信息。如何在Python中实现这一点?请建议。
我发现代码是,
pixels = list(im.getdata())
width, height = im.size
pixels = [pixels[i * width:(i + 1) * width] for i in xrange(height)]
但是我希望这个列表在单行和多列中,因为我的svm期望它以这种格式训练图像。
输出应该如下所示,因为这是一个灰度图像,2 3 253…
其中2是第一个像素的颜色,3是第二个像素的颜色,253是第三个像素的颜色,等等。2将在第一行的第一个单元格中,3在第二个单元格中,253在第三个单元格中,以此类推。但是整个图像像素都在这一行。因此,如果它是一张50*50的图片,那么将有2500列/单元格包含上述像素值。
基本上您想要展开数组(这是一个列表的列表)。您可以使用双链表推导式来实现这一点:
pixels = [i for row in pixels for i in row]
如果你想把它写入一个值之间有空格的文件,你可以这样做
with open('output.csv', 'w') as outfile:
outfile.write(' '.join([str(i) for i in pixels])