jMagick - сравнение изображений

Я пытаюсь разработать программу, которая сделает снимок веб-страницы, а затем сравнит ее со старой и выделит изменения, если таковые имеются.

Я использую Selenium-WebDriver для создания моментальных снимков. Для обработки изображений и сравнения после небольшого поиска в Google я нашел jMagick, Java-интерфейс для ImageMagick, который, как мне кажется, лучше всего подходит для моих требований.

Но из-за отсутствия надлежащей документации я не могу найти ничего подходящего. Если бы кто-нибудь мог помочь мне с любым образцом кода для сравнения изображений, это было бы действительно полезно.

Опять же, проблема состоит в том, чтобы сравнить два изображения и выделить изменения или различия между ними. Результатом может быть третье изображение с выделенными различиями.

Возможные дубликаты для этого: это и это . Но опять же, из них нельзя вывести никакого правильного решения.

Пожалуйста, если кто-нибудь может пролить свет на это или может быть какое-то другое решение в Java, которое сработает.


person roger_that    schedule 12.09.2013    source источник


Ответы (3)


boolean compareSuccess = compareImages("src/main/1.jpg","src/test/resources/bag_frame2.gif", "src/test/resources/ex.gif");
 //(input1,input2,outputfile)
//(boolean=true if same image...false if changes in image)
compareImages (String data,String data1, String diff) {

  CompareCmd compare = new CompareCmd();

  // For metric-output
  compare.setErrorConsumer(StandardStream.STDERR);
  IMOperation cmpOp = new IMOperation();
  // Set the compare metric
  cmpOp.metric("mae");

  // Add the expected image
  cmpOp.addImage(data);

  // Add the current image
  cmpOp.addImage(data1);

  // This stores the difference
  cmpOp.addImage(diff);

  try {
    // Do the compare
    compare.run(cmpOp);
    return true;
  }
  catch (Exception ex) {
    return false;
  }
}

Попробуйте это. И не забудьте импортировать im4java или maven

person Mari Selvan    schedule 02.09.2016
comment
Я использую тот же код, но мой код не может распознать CompareCmd compare = new CompareCmd(); Какие-либо предложения? - person RV_Dev; 10.04.2017
comment
Используйте im4java jar или зависимость от maven. Затем попробуйте еще раз. - person Mari Selvan; 09.05.2017

Если у вас все в порядке с системными вызовами, вы можете использовать pdf. http://pdiff.sourceforge.net/ Инструмент был написан для сравнения механизмов рендеринга и выводит различия между двумя файлами в новый файл. Однако, похоже, у него нет привязки к Java.

person Haplo    schedule 23.05.2014

По этой ссылке вы можете найти пример класса сравнения изображений с использованием jMagick. Они использовали функцию командной строки для сравнения изображений.

Фрагмент кода:

String[] cmd = new String[] {"compare","-metric","MSE",file1,file2,"tempcompareImage.jpg"};

https://github.com/techblue/jmagick/blob/master/test/magicktest/MagickTesttools.java

Кроме того, вы можете найти подробности о функции сравнения здесь: http://www.imagemagick.org/Usage/compare/

person Onur Baskirt    schedule 20.04.2016