gpt4 book ai didi

Java 图像处理

转载 作者:行者123 更新时间:2023-12-02 09:14:19 29 4
gpt4 key购买 nike

我有一个项目,我必须以多种方式处理图像。我陷入了像素化的困境。

对于像素化,我必须采用一组 10x10 像素并返回一个单独平均 RGB 颜色的单元格。目前我在运行程序中得到的只是一个红色图像。谢谢您的帮助。

public static Photograph pixelated(Photograph photo) {
int red = 0;
int green = 0;
int blue = 0;
int interval = 10;
Photograph p = null;
p = new Photograph(photo.getWidth(),photo.getHeight());
for (int row=0; row<photo.getHeight(); row +=interval) {
for (int col=0; col<photo.getWidth(); col +=interval) {

for (int row2=row; row2<row+10; row2++) {
for (int col2=col; col2<col+10; col2++) {
red = red + photo.getPixel(col, row).getRed();
green = green + photo.getPixel(col, row).getGreen();
blue = blue + photo.getPixel(col, row).getBlue();
}
}
red = red / interval;
green = green / interval;
blue = blue / interval;

Pixel rgb = new Pixel(red,green,blue);
for (int row3=0; row<interval; row++) {
for (int col3=0; col<interval; col++) {
p.setPixel(col3, row3, rgb);
}}}}
return p;
}

最佳答案

你那里有几个错误。您没有重置每个 block 之间的红绿蓝值,好的做法是仅让变量可用于它们的范围是必需的。

间歇性地使用间隔。

正如所指出的,您没有正确获得平均值,您可能还需要考虑舍入问题,此代码会被截断。

需要注意的一件事是,红绿蓝有时可以是整数有时 float ,如果将它们混合在一起,您会遇到问题。

public static Photograph pixelated(Photograph photo) {
int interval = 10;
Photograph p = null;
p = new Photograph(photo.getWidth(),photo.getHeight());
for (int row=0; row<photo.getHeight(); row +=interval) {
for (int col=0; col<photo.getWidth(); col +=interval) {
// declare and reset variables here
int red = 0;
int green = 0;
int blue = 0;

for (int row2=row; row2<row+interval; row2++) {
for (int col2=col; col2<col+interval; col2++) {
// i assume these functiosn return an int 0 <= x < 256 ?
red = red + photo.getPixel(col, row).getRed();
green = green + photo.getPixel(col, row).getGreen();
blue = blue + photo.getPixel(col, row).getBlue();
}
}
// you have a square not a line
red = red / (interval * interval);
green = green / (interval * interval);
blue = blue / (interval * interval);

// i assume this constructor takes ints 0 <= x < 256 ?
Pixel rgb = new Pixel(red,green,blue);
// interval needs to be used here
for (int row3=row; row3< row+interval; row3++) {
for (int col3=col; col3<col+interval; col3++) {
p.setPixel(col3, row3, rgb);
}
}
}
}
return p;
}

关于Java 图像处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15401158/

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