为什么我的代码不会返回我的arraylist的大小?

时间:2018-04-11 20:53:10

标签: java android arraylist opencv4android

我的代码读取图像并将像素值保存在double []类型的数组中。但是,我需要一个动态大小,所以我创建了一个arraylist并在arraylist中添加了数组。问题是我无法获得数组的大小,也无法从arraylist获取任何信息。它根本没有给我任何东西。问题是什么?请参阅下面的代码。

Java for android

public class img_pixel {
    String src = "path_of_image.jpg";
    Mat imgRead = Imgcodecs.imread(src, IMREAD_COLOR); //read a image
    int row = imgRead.rows(); //get the number of rows
    int col = imgRead.cols(); //get the number of cols

    List <double[]> pixels = new ArrayList<>(); //Arraylist 

    public void cor() {
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                double[] rgb = imgRead.get(i, j); //array with information i, j
                pixels.add(0, rgb);
            }
        }
        for (int x = 0; x < pixels.size(); x++) { // for to get size of arraylist
            Log.v("Size", "Size:" + pixels.get(x));
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您的问题表明对arraylist或数组如何工作缺乏了解。

  1. 您的代码已经“获得”了arraylist大小。在第二个for循环中,您调用pixels.size()。该方法返回arraylist的长度。所以,你错了“也没有从arraylist获得任何信息”。
  2. 您想知道的是每个像素的数组大小。我不确定为什么,因为给定图像的每一个都是一样的,但是让我们过去。在您的代码中,您有Log.v("Size", "Size:"+pixels.get(x));,我假设您尝试获取数组大小。但是,pixels.get(x)只返回一个数组对象,所以看起来你试图将double []类型的东西转换为字符串并期望看到一个数组大小。你看到了问题吗?如果你想要数组的“大小”(我假设你的意思是“长度”),你需要使用length属性,例如pixels.get(x).length。如果你真的想要这个尺寸,你需要做更多的工作。我建议找出你真正想要的信息然后做一些研究,比如“如何用Java获取数组的大小”。

答案 1 :(得分:0)

如果你想在arraylist的位置x中使用double数组的大小,只需调用somethink,如

pixels.get(x).length;

但我很抱歉,我不确定能够理解这个问题!