将 TIFF 图像转换为 XY 坐标

Converting TIFF Image to XY Coordinates

我正在尝试将 TIFF 图像解构为 Python 中的 XY 坐标。数据框中的第一列应为 X,第二列应为 Y。附上示例文件。它会以与 JPEG 相同的方式完成吗?到目前为止,我已经尝试了下面的代码。

示例 Tiff 图片: https://file-examples.com/index.php/sample-images-download/sample-tiff-download/

示例代码(无法弄清楚我缺少什么来获取坐标):

from PIL import Image
import numpy as np
import pandas as pd
image= Image.open(r"file_example_TIFF_1MB.tiff")
mypixels= colourImg.convert("RGB")
colors = np.array(mypixels.getdata()).reshape(image.size + (3,))

colors 是一个 WxHx3 数组。我们来看colors[:, :, 0],也就是红色通道。 X 坐标是列索引,Y 坐标是行索引。要创建你想要的数据框,你需要迭代这些。

result = []

h, w, _ = colors.shape
for x in range(w):
    for y in range(h):
        result.append([x, y, *colors[y, x, :]])

然后,创建数据框

df = pd.DataFrame(result, columns=["X", "Y", "R", "G", "B"])

或者,使用 numpy.meshgrid() 为您创建 xy 数字,然后将它们展平为列向量。对于较大的图像,这将比循环方法快得多。

result = np.zeros((w * h, 5))
h, w, c = colors.shape

xg, yg = np.meshgrid(range(w), range(h))

result[:, 0] = xg.flatten()
result[:, 1] = yg.flatten()

for i in range(c):
   result[:, 2 + i] = colors[:, :, i].flatten()

现在您在 result 中拥有与之前相同的内容,因此您可以将其转换为数据帧。