如何从目录加载所有图像并使用函数imread opencv读取?

时间:2018-04-26 19:32:05

标签: java android image loops opencv

我需要一些帮助。我创建了一个读取单个图像的函数。好吧,它的工作,但我想创建类似循环的东西,从目录获取所有图像,并使用imread方法获取像素值。我怎么能这样做?请按照下面的代码。

 public void cor() {
        String src = ("path_to_folder");
        Mat imgread;
        imgread = Imgcodecs.imread(src, IMREAD_COLOR);


        Mat rgbimage = null; //for conversion bgr2rgb

        int lin = imgread.rows(); //get the number of rows
        int col = imgread.cols(); //get the number of cols

        if (imgread.empty()) {
            Log.e("error", "is empty!");
        } else {
            rgbimage = new Mat(imgread.size(), imgread.type());
            Imgproc.cvtColor(imgread, rgbimage, Imgproc.COLOR_BGR2RGB);
        }

        for (int i = 0; i < lin; i++) {
            for (int j = 0; j < col; j++) {
                double[] rgb =rgbimage.get(i, j);
                pixels.add(rgb); //put data in arraylist

            }
        }
}

1 个答案:

答案 0 :(得分:0)

使用File,您可以获得目录中所有文件的列表。然后,您可以遍历列表以获取每个文件的绝对路径,并使用它执行任何操作。

public void cor() {
    File rootDir= new File("your/path/to/root_directory");
    File[] files = rootDir.listFiles();

    for(File file :files) {
        String src = file.getAbsolutePath();
        Mat imgread;
        imgread = Imgcodecs.imread(src, IMREAD_COLOR);

        /*
         * Do the other stuff in your method. 
         */ 
    }
}

注意:我并不是100%确定你在使用pixels做了什么,所以我只是写了你需要循环遍历一个目录。