gpt4 book ai didi

java - 如何在 Java 中设置阈值和 BufferedImage

转载 作者:行者123 更新时间:2023-11-30 10:58:14 25 4
gpt4 key购买 nike

我已经在 J​​ava 中将我的原始图像读取为 BufferedImage 然后进行一些操作,我试图将我的图像阈值设置为高(255)或低(0)但是当我保存我的图像时,实际上我试图覆盖它使用新值时,像素值不仅是0和255,还会出现一些相邻值,我不明白为什么。

读取我的图像

File input = new File("/../Screenshots/1.jpg");
BufferedImage image = ImageIO.read(input);
for (int i = 0; i < image.getWidth(); i++) {
for (int j = 0; j < image.getHeight(); j++) {
Color c = new Color(image.getRGB(i, j));
powerspectrum[i][j] = (int) ((c.getRed() * 0.299)
+ (c.getGreen() * 0.587) + (c.getBlue() * 0.114));
}
}

限制我的形象

for (int i = 0; i < image.getWidth(); i++) {
for (int j = 0; j < image.getHeight(); j++) {
if (gradient[i][j] <= upperthreshold
&& gradient[i][j] >= lowerthreshold)
spaces[i][j] = 255;
else
spaces[i][j] = 0;
Color gradColor = new Color(spaces[i][j], spaces[i][j],
spaces[i][j]);
image.setRGB(i, j, gradColor.getRGB());
}
}

保存我的图像

File gradoutput = new File("/../Screenshots/3_GradThresh.jpg");
ImageIO.write(image, "jpg", gradoutput);

我不知道如何截断其他强度值。

最佳答案

我怀疑这是因为 JPG 是一种有损格式。当您将 JPG 保存到磁盘时,它正在进行压缩。尝试使用位图来查看是否删除了这些相邻的灰色区域值。

关于java - 如何在 Java 中设置阈值和 BufferedImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32340553/

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