如何使用Python将TIFF图像转换为XY坐标,是否与JPEG处理逻辑一致?
解答
TIFF与JPEG的处理逻辑一致性说明
普通非地理配准的TIFF图像,拆解像素XY坐标的逻辑和JPEG完全一致。只有带空间投影信息的GeoTIFF格式,才需要额外调用GDAL等库读取地理变换参数,将像素坐标转换为真实地理坐标,常规TIFF不需要额外处理。
现有代码问题与补全逻辑
你提供的代码存在两处需要调整的地方:
- 变量名错误:代码中未定义
colourImg变量,应该替换为你之前读取得到的image对象 - 缺少坐标生成逻辑:你已经完成了图像像素值的读取,但还需要生成所有像素对应的XY坐标网格,再拼接为DataFrame
完整实现代码
from PIL import Image import numpy as np import pandas as pd # 读取图像,TIFF、JPEG等常规栅格格式通用 image = Image.open(r"file_example_TIFF_1MB.tiff") mypixels = image.convert("RGB") width, height = image.size # 生成全量像素的XY坐标 x = np.repeat(np.arange(width), height) y = np.tile(np.arange(height), width) # 拼接为仅含X、Y两列的DataFrame df = pd.DataFrame({"X": x, "Y": y}) # 如需保留像素RGB信息,可改用以下写法 # rgb = np.array(mypixels.getdata()) # df = pd.DataFrame({"X":x, "Y":y, "R":rgb[:,0], "G":rgb[:,1], "B":rgb[:,2]})
补充说明
默认生成的坐标原点为图像左上角,X轴向右递增,Y轴向下递增,符合PIL读取图像的默认规则。如果需要将Y轴原点调整为图像左下角,仅需修改Y坐标的生成逻辑为:y = height - 1 - np.tile(np.arange(height), width)
内容的提问来源于stack exchange,提问作者maximus
相关产品推荐
相关产品推荐

