Как загрузить все изображения из каталога и прочитать с помощью функции imread OpenCV? - PullRequest
0 голосов
/ 26 апреля 2018

Мне нужна помощь. Я создал функцию, которая читает одно изображение. Ну, это работает, но я хочу создать что-то вроде цикла для получения всех изображений из каталога и использовать метод 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 голосов
/ 26 апреля 2018

Используя Файл , вы можете получить список всех файлов в каталоге. Затем вы можете перебрать список, чтобы получить абсолютный путь к каждому файлу и делать с ним все, что захотите.

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, поэтому я просто написал, что вам нужно для просмотра каталога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...