Frage

Ich muss ein Programm schreiben, das jedes Pixel durch den Medianwert von ihm und seinen 8 Nachbarn ersetzt.Was ich habe, wird kompiliert, aber wenn ich versuche, ein neues Bild zu erstellen, erhalte ich mehrere Fehler.Hilfe wird geschätzt.

Hier ist der Stacktrace:

Exception in thread "main" java.lang.ClassCastException: [I cannot be cast to java.lang.Comparable
at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:290)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:171)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
at java.util.Arrays.sort(Arrays.java:472)
at ImageProcessing.median(ImageProcessing.java:25

Und hier ist mein Code:

public static int [] [] median(int [] [] image) {
    int height = image.length;
    int width = image[0].length;
    int [] [] result = new int [height] [width];

    for (int col = 0 ; col < image.length ; col++) {
        result[0][col] = image[0][col];
        result[height - 1][col] = image[height - 1][col];
    }

    for (int row = 0 ; row < image[0].length ; row++) {
        result[row][0] = image[row][0];
        result[row][width - 1] = image[row][width - 1];
    }

    for (int row = 1 ; row < height - 1 ; row++) {
        for (int col = 1 ; col < width - 1 ; col++) {
            Arrays.sort(image);
            result[row][col] = image[row][col] / 2;
        }
    }
    return result;
}
War es hilfreich?

Lösung

Der Fehler, den Sie erhalten, liegt daran, dass im letzten Schleifenpaar Ihr Aufruf an erfolgt Arrays.sort(image) versucht, die Zeilen des Bildes zu sortieren.

Anstatt anzurufen Arrays.sort(image), müssen Sie eine Liste der neun Pixelwerte erstellen, die Sie betrachten möchten (das Pixel selbst und seine acht Nachbarn).Dann sortieren Das, und schreiben Sie den Medianwert hinein result.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top