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 的错误方式)。
| 归档时间: |
|
| 查看次数: |
15990 次 |
| 最近记录: |