Pandas - 图像到 DataFrame

Ter*_*den 5 python image pandas

我想将 RGB 图像转换为 DataFrame,以便我拥有每个像素的坐标及其 RGB 值。

         x   y   red  green  blue
0        0   0   154      0     0
1        1   0   149    111     0
2        2   0   153      0     5
3        0   1   154      0     9
4        1   1   154     10    10
5        2   1   154      0     0
Run Code Online (Sandbox Code Playgroud)

我可以很容易地将 RGB 提取到 DataFrame 中

colourImg = Image.open("test.png")
colourPixels = colourImg.convert("RGB")
colourArray = np.array(colourPixels.getdata())

df = pd.DataFrame(colourArray, columns=["red","green","blue"])
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在那里获得 X 和 Y 坐标。我可以写一个循环,但是在需要很长时间的大图像上。

dav*_*don 10

不幸的是,尝试使用np.indices它最终会得到一个坐标是第一个维度的数组,但您可以做一些事情np.moveaxis来解决这个问题。

colourImg = Image.open("test.png")
colourPixels = colourImg.convert("RGB")
colourArray = np.array(colourPixels.getdata()).reshape(colourImg.size + (3,))
indicesArray = np.moveaxis(np.indices(colourImg.size), 0, 2)
allArray = np.dstack((indicesArray, colourArray)).reshape((-1, 5))


df = pd.DataFrame(allArray, columns=["y", "x", "red","green","blue"])
Run Code Online (Sandbox Code Playgroud)

它不是最漂亮的,但它似乎有效(编辑:修复了 x,y 的错误方式)。

  • 我怎样才能应用这个逆过程?我在数据框中有 X、Y 坐标和 R、G、B 值,看起来像 X、Y、R、G、B。如何通过保留坐标将数据框转换为图像。 (4认同)