使用python将图像转换为像素数据帧并转换为csv文件

时间:2019-02-11 13:28:17

标签: python

我有一个带有图片的文件夹("C:\Users\Admin\Downloads\mypicture") 这里的例子 82

我想像这样将其转换为像素数据帧

  pixel1 pixel. pixel158 pixel159 pixel160 pixel161 pixel162 pixel163 pixel164 pixel165 pixel166 pixel167 pixel168 pixel169 pixel170 pixel171 pixel172
1      0      …        0      191      250      253       93        0        0        0        0        0        0        0        0        0        0
2      0      …       32        0        0        0        0        0        0        0        0        0        0        0        0        0        0
  pixel173 pixel174 pixel175 pixel176
1        0        0        0        0
2        0        0       16      179

每个图像都表示为一行。每个图像的灰度范围在[0,255]范围内。 我这样做

img = mpimg.imread("C:\Users\Admin\Downloads\mypicture")
img = np.ravel(img) 
df = pd.DataFrame([img])

但是我得到这个错误

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

如何在csv文件中获取所需的数据帧?

1 个答案:

答案 0 :(得分:0)

您可以使用PIL库,通过从这样的图像中获取像素列表来将图像转换为像素数据帧

from PIL import Image
im = Image.open('image.png')

pixels = list(im.getdata())

这将返回具有(r,g,b)值的像素列表,因此,如果您只想获取每个像素的灰度,只需像这样在每个值的第二个元素中迭代列表即可

result = []
counter = 0
for pixel in pixels:
    counter += 1
    result.append(['pixel'+ str(counter), pixel[1]])
return (result)

输出:

['pixel1', 72], ['pixel2', 50], ['pixel3', 0], ['pixel4', 11], ['pixel5', 30], ['pixel6', 42], ['pixel7', 107], ['pixel8', 123], ['pixel9', 124], ['pixel10', 130]