@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
есть: не все картинки распознаются

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

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

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

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
28 мар. 2024, в 20:09
1500 руб./в час
28 мар. 2024, в 19:53
100000 руб./за проект
28 мар. 2024, в 19:34
10000 руб./за проект