172 похожих чатов

Всем привет! Есть такая задача. Пользователи грузят фотографии, надо чтобы

они были уникальны и не повторялись. Как можно их сравнивать? Понятно, что если это абсолютно одинаковые фото, то можно, например, сравнивать NSData. А если чутка их изменили? Ну и плюс есть ли какой-то способ хранить данные для сравнения не в полном виде (всю фотку), а какое-то ее краткое представление, вроде хеша? Я извиняюсь за сумбур, я начинающий разработчик, без инженерного образования.

3 ответов

8 просмотров

Можно хеши, можно считывать ргбшку в нескольких точках на фотографии

привет. цветные изображения особо не имеет смысла сравнивать, можно загнать в негатив одинаковые фото и будут они сильно разными, хотя на фото одно и то же может быть изображено вот что я предлагаю. сжимаешь изображение до нужного тебе фиксированного размера, скажем. 64 на 64 (надо пропорционально), загоняешь его в grayscale, чтоб значение каждого пикселя было от 0 до 255 и считаешь от него хеш есть несколько алгоитмов - pHash, aHash, wHash, dHash - почитай и выбери что больше нравится лично мне понравился больше всего pHash, вот у меня реализация, но без комментов особо не понятно и писалось под opencv https://github.com/SanCHEESE/ImgReconstruction/blob/windows-ann/ImgReconstruction/Core/utils.cpp хеш будет очень длинный, для 64х64 = 4 096 для сравнения фотографий можно положить, что отличается, например 256 циферок, остальны похожи, ну значит примерно фотки похожи, тут тебе в помошь всякие LCS, можно тупо посимвольно есть еще способы - сжимаешь изображение но уже скажем до 1000х1000, лучше - меньше, и используешь поиск ключевых точек - SURF , или SIFT, рекомендую последний, так как он инвариантен к 1) смещению 2) повороту 3) масштабу (один и тот же объект может быть разных размеров на различных изображениях) 4) изменению яркости 5) изменению положения камеры ну и просто сопоставляешь и ставишь сколько % точек совпадает насчет фильтров - в grayscale они особо не видны, так что серое - твое все

Вот хорошая статья, как уже писали выше, phash - твоё все. https://www.hackerfactor.com/blog/?/archives/432-Looks-Like-It.html

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Ребят, кто сталкивался с тем, что Electron.js не разворачивает билд React.js-приложения? Голый body в чёрном цвете, как и должно быть, но остального - нет. Билд работает исп...
..
6
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Anyone knows how to build this widget in Flutter? I have all the assets for round stations and the road, but how can I make the my widget animate between these stations? And h...
Mohammad Zamani
9
короче я не выдержал постоянно определять структуры, чтобы возвращать массивы разных типов. Как обычно еще это делают?
Павλо 🇺🇦
7
Подскажите как мне лучше держать websocket сединение и переодически передавать в него данные? Сначала я сделал так: for _ in 1...1000 { try? await ws.send("test") try...
Mihail Verenich
2
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Карта сайта