@artshelom

Как сравнивать картинки??

Добрый вечер всем.
У меня есть идея распознавания картинок, на темы природа, космос и тд...
Прочитав литературы на эту тему, я вынес что для распознавания, надо много картинок для сравнения и мощный комп, иначе работа будет выполняться медленно.

А вопрос у меня в том, если готовые библиотеки на java для распознавания изображений?? и есть ли ещё подводные камни, о которых стоит знать??
  • Вопрос задан
  • 1388 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Если вопрос стоит в нахождении нескольких отличии между двум полностью идентичными картинками, то библиотеки не нужны
import java.io.File;
import java.awt.Color;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;

public class ImageSimilarity {
    public static BufferedImage getDifferenceImage(BufferedImage img1, BufferedImage img2) {
        final int w = img1.getWidth(),
                  h = img1.getHeight(), 
                  highlight = Color.MAGENTA.getRGB();
        final int[] p1 = img1.getRGB(0, 0, w, h, null, 0, w);
        final int[] p2 = img2.getRGB(0, 0, w, h, null, 0, w);

        for (int i = 0; i < p1.length; i++) {
            if (p1[i] != p2[i]) {
                p1[i] = highlight;
            }
        }

        final BufferedImage out = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
        out.setRGB(0, 0, w, h, p1, 0, w);
        return out;
    }

    public static void main(String[] args) throws Exception {
        ImageIO.write(
            getDifferenceImage(
                ImageIO.read(new File("img1.png")),
                ImageIO.read(new File("img2.png"))),
            "png",
            new File("diff.png"));    
    }
}


Библиотеки нужны для более сложных задач, типа нахождения разницы между двумя фотографиями одного места, сделанными в разное время. Приведённый выше код тупо зальёт итоговое изображение пурпурным туманом. Для таких случаем уже нужны библиотеки типа OpenCV или OpenIMAJ.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
есть: не все картинки распознаются

хз что тебе нужно, но чудо-библиотеки нет, есть фреймворки, которые нужно учить

начни отсюда, но вообще материалов много
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы