Кому нужен скрипт поиска картинок?

Аватар пользователя ks

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

Зависимости -- python, python-imaging (PIL), если пакет python-imaging не установлен, будет использован convert из ImageMagick (в этом случае поиск будет не только среди растровых, но и векторных изображений, однако работать скрипт будет существенно медленнее).

Синтаксис:

find-img -p pattern [-t threshold] directories

где
   pattern     -- файл эталонного изображения
   threshold  -- порог коэффициента корреляции
   directories -- список каталогов
ВложениеРазмер
find-img.zip1.28 КБ
Аватар пользователя ks

Кому нужен скрипт поиска картинок?

Что-то *.gz не хочет вкладываться Грустный

Аватар пользователя Mimino

Re: Кому нужен скрипт поиска картинок?

Этот форум был настроен на атачи "txt .gif .rpm .zip .tar .tar.gz .cpio" (показывается внизу, при подключении файла).

Добавлен .gz

Аватар пользователя ks

Re: Кому нужен скрипт поиска картинок?

Обновление скрипта

Добавил возможность явно указывать использование PIL или ImageMagick, опции
--pil
--magick

ВложениеРазмер
find-img.gz 1.56 КБ
Аватар пользователя ks

Re: Кому нужен скрипт поиска картинок?

Мелкие переделки привели к смене семантики так, что теперь сменилось название на cmp-img. Вместо того, чтобы скрипт сам сканировал каталоги -- решил поручить это внешним программам, типа find с более широкими возможностями. Получилось что-то подобное фильтру.

Использование: cmp-img [options] -p pattern [--] files|-
(в квадратных скобках необязательные параметры)

Options:
-h, --help показать эту справку и выйти
-V, --version напечатать версию и выйти
-r, --print-r выводить коэффициент корреляции
-0, --null принимать имена файлов, разделенных '\0', как xargs. Используется с `-'
-e, --errors трассировка ошибок
-u USE, --use=USE использовать pil (Python Image Library),
либо imagick (ImageMagick),
либо gmagick (GraphicsMagick),
либо all (и то и другое :))
-t THRESHOLD, --threshold=THRESHOLD
выводить изображения, модуль коэффициента корреляции которых
больше или равен порогу (THRESHOLD)
по умолчанию = 0.8
-p PATTERN, --pattern=PATTERN
файл эталонного изображения (образец)

Arguments:
files список файлов изображений
- вводить имена файлов со стандартного ввода (stdin)

Гарантии:
Какие, на фиг, могут быть гарантии? :)

Примеры использования.

Поиск картинок в каталоге /usr/share и его подкаталогах, эталон в текущем каталоге:
find /usr/share | cmp-img -p etalon.png -

Поиск картинок в каталоге /usr/share и его подкаталогах jpg-файлов с "кривыми" именами,
эталон в текущем каталоге:
find /usr/share -name '*.jpg' -print0| cmp-img -0p etalon.png -

Поиск картинок в каталоге /usr/share/wallpapers png и jpg файлов,
эталон в текущем каталоге:
cmp-img -p etalon.png /usr/share/wallpapers/*.{png,jpg}

Поиск картинок в каталоге /usr/share и его подкаталогах, с использованием ImageMagick,
эталон в текущем каталоге:
find /usr/share -type f | cmp-img -u imagick -p etalon.png -

Итак, скачиваем скрипт, под root разжимаем и делаем его выполняемым:

zcat cmp-img.gz > /usr/local/bin/cmp-img
chmod 755 /usr/local/bin/cmp-img

В системе должен быть установлен интерпретатор python и его библиотека PIL (Python Image Library), которая в RH-подобных дистрах находится в пакете python-imaging.
Вместо PIL скрипт может использовать convert из ImageMagick или gm (GraphicsMagick)

Скрипт отлаживался на Python 2.5 (в ASPLinux python 2.4), так что если что-то пойдет не так -- пишите

ВложениеРазмер
cmp-img.gz 2.89 КБ
Аватар пользователя shmel

Re: Кому нужен скрипт поиска картинок?

Великолепный скрипт! спасибо!

Аватар пользователя ks

Re: Кому нужен скрипт поиска картинок?

Внес некоторые правки с учетом изменений иерархии классов исключений при переходе с python 2.4 на 2.5, что вызывало не совсем корректный выход при вызове sys.exit в python 2.4, а также изменил вывод чисел с учетом локали. Планирую в будущем приделать морду для чайников (и чего они так боятся CLI?) Улыбка

ВложениеРазмер
cmp-img.gz 3.03 КБ
Аватар пользователя ks

Re: Кому нужен скрипт поиска картинок?

Добавил вывод строк, разделенных "\0" (опция -z, --print0).

Кстати, команда для поиска негатива:
find /dir -type f | cmp-img -rp positive.png - | awk '$1 < 0'

ВложениеРазмер
cmp-img.gz 3.1 КБ
Аватар пользователя ks

Re: Кому нужен скрипт поиска картинок?

Выкладываю морду к cmp-img.

Закачиватете тарбол, распаковываете его командой
tar xzf findimg.tar.gz
заходите в каталог findimg
cd findimg
и выполняете (с правами root'а)
make
программа установиться в /usr/local, либо:
make DEST=$HOME
если есть желание поставить ее в домашний каталог (для этого права root'а не нужны)

Морда запускается командой findimg

ВложениеРазмер
findimg.tar.gz 7.17 КБ
Аватар пользователя ks

Кому нужен скрипт поиска картинок?

Интересно, из тех кто пользуется скриптом кто-то сидит в ASPLinux? ;)

Аватар пользователя ks

Re: Кому нужен скрипт поиска картинок?

Исправил "особенность", из-за которой не запускался cmp-img из findimg-а в ASPLinux 11.2.

Выкладываю тарболы и rpm

rpm-ки устанавливать командой из root-а
rpm -ivh cmp-img-1.0.4-1.rpm findimg-0.2-1.rpm

или покороче, если в каталоге больше нет других rpm-пакетов
rpm -ivh *.rpm

PS
Удачи!

ВложениеРазмер
cmp-img-1.0.4.tar.gz 3.59 КБ
findimg-0.2.tar.gz 4.25 КБ
cmp-img-1.0.4-1.noarch.rpm 5.05 КБ
findimg-0.2-2.noarch.rpm 5.84 КБ
Аватар пользователя ks

Re: Кому нужен скрипт поиска картинок?

Обновляем интырфэйс Улыбка

ВложениеРазмер
findimg-0.5.tar.gz 6.29 КБ
findimg-0.5-1.noarch.rpm 7.82 КБ
RSS-материал