我需要一些帮助。我创建了一个读取单个图像的函数。好吧,它的工作,但我想创建类似循环的东西,从目录获取所有图像,并使用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
}
}
}
答案 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
做了什么,所以我只是写了你需要循环遍历一个目录。