【问题标题】:coordinates out of bound:bufferedimage(getrgb) [duplicate]坐标超出范围:bufferedimage(getrgb)[重复]
【发布时间】:2015-12-29 12:20:04
【问题描述】:

我必须先找到图像的矩阵,我有这个代码,这给了我一个错误L[row][col] = image.getRGB(row, col); the error is"java.lang.ArrayIndexOutOfBoundsException: Coordinate out of bounds!" 该错误的原因是什么??

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import Jama.EigenvalueDecomposition;
import Jama.Matrix;

public class eigenvalues {

    double L[][], A[];

    public static void main(String[] args) throws IOException { 
        File file = new File("C:\\Users\\lina\\workspace\\eigen\\koala.jpg");

        BufferedImage image= ImageIO.read(file);
        int width = image.getWidth();
        int height = image.getHeight();
        double[][] L = new double[height][width];

        for (int row = 0; row < height; row++) {
            for (int col = 0; col < width; col++) {
                L[row][col] = image.getRGB(row, col);
            }
        }
        Matrix A=new Matrix(L);
        EigenvalueDecomposition e = A.eig();
        Matrix V = e.getV();
        Matrix D = e.getD();
        System.out.print("A =");
        A.print(9, 6);
        System.out.print("D =");
        D.print(9, 6);
        System.out.print("V =");
        V.print(9, 6);

【问题讨论】:

    标签: java image matrix rgb bufferedimage


    【解决方案1】:

    您在 getRGB() 方法中颠倒了 X 和 Y 的顺序。

    试试看:L[row][col] = image.getRGB(col, row);

    【讨论】:

    • @lina 欢迎您。如果您将我的答案和 v.ladynev 的答案标记为有用,那就太好了;)
    【解决方案2】:

    方法getRGB()有这个签名

    public int getRGB(int x, int y)
    

    所以这行代码

    L[row][col] = image.getRGB(row, col);
    

    需要修改

    L[row][col] = image.getRGB(col, row); 
    

    【讨论】:

    • @lina 欢迎您。如果您将我的答案和皮埃尔的答案标记为有用,那就太好了。
    猜你喜欢
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 2012-08-24
    相关资源
    最近更新 更多