Я работаю над андроидным приложением, которое работает над обработкой изображений с использованием определенных алгоритмов MSE и SSI для сравнения структуры изображений.все файлы изображений из папки для обработки
У меня есть рабочий код, который позволяет мне выбрать два изображения из выбранной папки и выполнить необходимые операции над ними, однако следующий шаг - позволить пользователю выбрать папку, которая автоматически считывает все изображения и выполняет требуемые операции и сохранить изображения, которые, как считается, похожи.
У меня есть следующий код, но в тот момент, когда он работает с изображениями, и в конечном итоге это приведет к ошибке таймаута.
Есть ли что-то, что я делаю неправильно, или что я должен измениться, чтобы это работало плавно. В папке содержится 172 изображения, которые необходимо обработать.
public void addItemsOnSpinner() {
spinner1 = (Spinner) findViewById(R.id.spinner);
List<String> list = new ArrayList<String>();
list.add("New images");
list.add("All downloads");
list.add("Bluetooth");
list.add("Camera shots");
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(dataAdapter);
selection = String.valueOf(spinner1.getSelectedItem());
}
@Override
public void onClick(View v) {
int n =0;
if (v == submit) {
for (int i = 1; i <= 172; i++) {
for (int j = 1; j <= 172; j++) {
absoluteFilePath = folder + "/" + selection + "/image" + i + ".bmp";
bMap1 = BitmapFactory.decodeFile(absoluteFilePath);
absoluteFilePath2 = folder + "/" + selection + "/image" + j + ".bmp";
bMap2 = BitmapFactory.decodeFile(absoluteFilePath2);
Toast.makeText(LoadFile.this, "Comparing Image" + i + " against Image" + j,
Toast.LENGTH_SHORT).show();
//loop through each image compare image by image
calculateMSE(bMap1, bMap2, 256, 256);
calculateSSI(bMap1, bMap2, 4);
//calculateSSI(bMap1, bMap2, 8);
//calculateSSI(bMap1, bMap2, 16);
//calculateSSI(bMap1, bMap2, 32);
//if images are similar save file paths to array
if(calculateMSE(bMap1, bMap2, 256, 256) <= 0.4 && calculateSSI(bMap1, bMap2, 4) >= 0.6){
ImageView image1 = (ImageView) findViewById(R.id.imgView);
image1.setImageBitmap(bMap1);
ImageView image2 = (ImageView) findViewById(R.id.imgView2);
image2.setImageBitmap(bMap2);
//saving file path to array
bitmapArray1 [n] = bMap1;
bitmapArray2 [n] = bMap2;
n++;
}
Try с меньшим количеством изображений. Если это работает, очень возможно, что у вас заканчивается память –
Просьба предоставить LogCat вывод ошибки. – Fildor
', который позволяет мне выбрать два изображения из выбранной папки. Если вам нужны образы два на два, то как вы можете выбрать их из списка каталогов? «в минуту он работает через изображения» ??? Пожалуйста, объясните, что вы имеете в виду. ', и это будет в конечном итоге через ошибку времени.'. Пожалуйста, лучше объясните, что произойдет. – greenapps