gpt4 book ai didi

java - 以图片作为输入,进行灰度化,然后输出

转载 作者:行者123 更新时间:2023-11-29 09:16:41 24 4
gpt4 key购买 nike

我正在尝试拍摄一张图片作为输入,然后处理该图片(我特别想将其设为灰度),然后输出新图像。这是我正在编辑的代码片段,但我被卡住了。关于我下一步可以改变/做什么的任何想法。非常感谢!

public boolean recieveFrame (Image frame) {
int width = frame.width();
int height = frame.height();

for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
Color c1 = frame.get(i, j);
double greyScale = (double) ((Color.red *.3) + (Color.green *.59) + (Color.blue * .11));
Color newGrey = Color.greyScale(greyScale);
frame.set(i, j, newGrey);
}
}

boolean shouldStop = displayImage(frame);
return shouldStop;
}

最佳答案

我会尽量坚持你已经拥有的东西。因此,我假设您正在寻找如何对 Image 进行像素级处理,而不仅仅是寻找一种恰好适用于转换为灰度的技术。

第一步是您需要图像是 BufferedImage。这是您默认从 ImageIO 获得的内容,但如果您有其他类型的图像,您可以创建一个 BufferedImage 并先将其他图像绘制到其中:

BufferedImage buffer = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffer.createGraphics();
g.drawImage(image, 0, 0);
g.dispose()

然后,您可以像这样对像素进行操作:

public void makeGrey(BufferedImage image) {
for(int x = 0; x < image.getWidth(); ++x) {
for(int y = 0; y < image.getHeight(); ++y) {
Color c1 = new Color(image.getRGB(x, y));
int grey = (int)(c1.getRed() * 0.3
+ c1.getGreen() * 0.59
+ c1.getBlue() * .11
+ .5);
Color newGrey = new Color(grey, grey, grey);
image.setRGB(x, y, newGrey.getRGB());
}
}
}

请注意,这段代码非常慢。一个更快的选择是将 BufferedImage 中的所有像素提取到 int[] 中,对其进行操作,然后将其设置回图像中。这使用了您将在 javadoc 中找到的 setRGB()/getRGB() 方法的其他版本。

关于java - 以图片作为输入,进行灰度化,然后输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8979908/

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