【问题标题】:How to make an underwater filter for pictures如何为图片制作水下滤镜
【发布时间】:2015-04-10 18:24:17
【问题描述】:

我有一个项目,其中一部分是让鱼的图片(名为 water.jpg)更显眼。我只是不知道我需要更改哪些像素才能使其正常工作。我试过一次只保留蓝色、绿色或红色,我试过一次只保留蓝色、绿色或红色以外的所有东西。我几乎只需要知道我需要更改哪些图片。我拥有的代码只是几个方法,它们都可以正常工作,但它们是我在水下方法的基础。

public static void main(String[] args) {
    Picture beach = new Picture("water.jpg");
    beach.explore();
    beach. (INSERT.METHOD.HERE);
    beach.explore();
}

public void zeroBlue() {
    Pixel[][] pixels = this.getPixels2D();
    for (Pixel[] rowArray : pixels) {
        for (Pixel pixelObj : rowArray) {
            pixelObj.setBlue(0);
        }
    }
}

public void keepOnlyBlue() {
    Pixel[][] pixels = this.getPixels2D();
    for (Pixel[] rowArray : pixels) {
        for (Pixel pixelObj : rowArray) {
            pixelObj.setGreen(0);
            pixelObj.setRed(0);
        }
    }
}

public void grayscale() {
    Pixel[][] pixels = this.getPixels2D();
    for (Pixel[] rowArray : pixels) {
        for (Pixel pixelObj : rowArray) {
            int avg = (pixelObj.getGreen() + pixelObj.getBlue() + pixelObj.getRed()) / 3;
            pixelObj.setGreen(avg - 3);
            pixelObj.setRed(avg - 3);
            pixelObj.setBlue(avg - 3);
        }
    }
}

public void negate() {
    Pixel[][] pixels = this.getPixels2D();
    for (Pixel[] rowArray : pixels) {
        for (Pixel pixelObj : rowArray) {
            pixelObj.setGreen(255 - pixelObj.getGreen());
            pixelObj.setRed(255 - pixelObj.getGreen());
            pixelObj.setBlue(255 - pixelObj.getGreen());
        }
    }
}

【问题讨论】:

  • 与 StackOverflow 无关。
  • 我的意思是,它仍然是 java
  • 这是什么Pixel 类?
  • 也许您应该首先尝试使用图像处理程序,例如 GIMP,然后尝试将任何为您带来最佳结果的代码转换为代码。
  • 让我解释一下其他人发布的内容。仅仅因为您使用 Java 解决问题并不意味着该问题与 Java 相关。这是一个与摄影相关的问题。摄影师将比软件开发人员提供更好的帮助。一旦您知道根本问题是什么,您就可以要求澄清如何使用 Java 解决问题。

标签: java image-processing


【解决方案1】:

你能附上一张water.jpg的图片吗?它可能有助于理解您的问题。 如果你的否定也是这个......

public void negate() {
     Pixel[][] pixels = this.getPixels2D();
     for (Pixel[] rowArray : pixels) {
         for (Pixel pixelObj : rowArray) {
             pixelObj.setGreen(255 - pixelObj.getGreen());
             pixelObj.setRed(255 - pixelObj.getRed());
             pixelObj.setBlue(255 - pixelObj.getBlue());
         }
     }
}

还是我自己想反了?

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    相关资源
    最近更新 更多