gpt4 book ai didi

java - 读取 tiff 栅格数据

转载 作者:行者123 更新时间:2023-12-01 14:25:58 28 4
gpt4 key购买 nike

我正在使用以下方法读取 2048X2048 像素的 tiff 文件:

private static int[][] convertTo2DWithoutUsingGetRGB(BufferedImage image) {

final short[] pixels = ((DataBufferUShort) image.getRaster().getDataBuffer()).getData();

int[][] data = new int[2048][2048];

int col = 0;
int row = 0;
int blockSize = 2048;
for (int i=0; i<pixels.length; i++) {
data[col][row] = pixels[i];
row++;
if (row == blockSize) {
col++;
row = 0;
}
}

return data;
}

但是,如果我将 gdal 与 python 一起使用,例如,我的数组上会不断出现负值:

import gdal # Tiff Image Read

def getArrayFromImage(fileName):
img = gdal.Open(fileName)
return img.ReadAsArray().astype(int)

我只得到正值。在上面的java方法中,是否需要对原始值进行处理才能成为tiff图像的有效像素?

最佳答案

不知道为什么,但通过将 65536 添加到负值来解决问题。

int j = pixels[i];
if (j < 0) {
j += 65536;
}
data[col][row] = j;

关于java - 读取 tiff 栅格数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17176956/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com