0
下面的代码是一个图像处理例程。 x和y表示组成图像的所有像素的坐标。基本信息如下:如果在Java中给定x和y坐标,如何模糊图像?
- x,y - 每个像素的坐标。
- IMGH,IMGW - 高度和宽度中的图像的像素
- R,G,B - 每个像素
代码的红色,绿色,和蓝色的水平使用双for循环做图像中每个像素的东西。我想在这个for循环内做的是为每个像素,我想平均8个周围像素的r,g,b值,并使平均值为中心像素的值。这会产生模糊图像的效果。有人能帮助我吗?
protected void proc_17() {
info = "";
for (int y = 0; y < imgH; y++) {
for (int x = 0; x < imgW; x++) {
int xNext = (x+1) % imgW;
int yNext = (y+1) % imgH;
float r = (imgOld.getR(xNext, yNext) + imgOld.getR(xNext, yNext))/8;
float g = (imgOld.getG(xNext, yNext) + imgOld.getG(xNext, yNext))/8;
float b = (imgOld.getB(xNext, yNext) + imgOld.getB(xNext, yNext))/8;
imgNew.setR(x, y, r);
imgNew.setG(x, y, g);
imgNew.setB(x, y, b);
}
}
}
你将需要循环两次,一次计算出新的价值,一旦应用它们。否则将使用一些已经模糊的像素执行计算 – nhouser9
为什么不用'imgOld.getR(xNext,')替换'(imgOld.getR(xNext,yNext)+ imgOld.getR(xNext,yNext))/ 8; yNext)/ 4;'? – CraigR8806
将除法值除以4只是将每个像素的RGB值分开,使得它们更低,这反过来使图像变暗,因为值一律减少。 – Teej