gpt4 book ai didi

java - 字节平均值

转载 作者:行者123 更新时间:2023-12-01 13:36:02 26 4
gpt4 key购买 nike

我也遇到这样的问题。我想从少数不同的图像中获得“平均”图像。我的想法是按顺序将它们加载到 BufferImage,对每个位中的值求和,然后除以照片数量。问题是我无法将 byte[][] 除以数字。我做错了什么,或者正确的方法是什么?

File[] others = getOtherImageFiles(file);
byte[][] pixels = new byte[300][];
List<byte[][]> pixelsList = new ArrayList<byte[][]>();
for (int i = 0; i < others.length; i++) {
try {
img = ImageIO.read(others[i]);
} catch (IOException e) {
}
for (int x = 0; x < img.getWidth(); x++) {
pixels[x] = new byte[img.getHeight()];
for (int y = 0; y < img.getHeight(); y++) {
pixels[x][y] = (byte) (img.getRGB(x, y));
}
}
pixelsList.add(pixels);
}
byte[][] pixelsSum = new byte[300][];
for (int i = 0; i < pixelsList.size(); i++) {
for (int x = 0; x < img.getWidth(); x++) {
for (int y = 0; y < img.getHeight(); y++) {
pixelsSum[x][y] += pixelsList.get(i)[x][y];
}
}
}
for (int x = 0; x < img.getWidth(); x++) {
for (int y = 0; y < img.getHeight(); y++) {
pixelsSum[x][y]/10;
}
}
}

我想将它们用作面部比较器,重点是创建面部方案。

最佳答案

你已经很接近了。您除以 10,但从未将结果写回 pixelsSum数组,因此结果丢失。你需要做的是:

pixelsSum[x][y] = pixelsSum[x][y] / 10;

或速记:

pixelsSum[x][y] /= 10;

您将遇到的另一个问题是每个 byte Java(或任何其他语言)中只能保存 0 到 255 之间的值。因此,如果您有一个字节 x = 255, y = 1 , x + y结果将是 0。当您将 10 张图像加起来时,几乎肯定会超过 255 个限制。我建议将 PixelSum 从 byte[][] 更改为至int[][] ,然后在进行除法后将其转回字节。

关于java - 字节平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21267018/

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