Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [GIMP] Script-fu как сделать массовую обработку по выделению на одной фото  (Прочитано 2248 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн iaks

  • Автор темы
  • Участник
  • *
  • Сообщений: 217
    • Просмотр профиля
Всем привет!
Задача стоит следующая - убрать мусор с нескольких сотен фоток. Мусор в одном и том же месте.
Знаю как убрать с помощью Фильтры→Улучшение→Восстановить выделение.

А вот как сделать это массово?
Узнал что есть скрипты, но как прописать?

Думаю алгоритм будет следующий:
1. открываем фото
2. выделяем область, которую будем восстанавливать
3. Прописываем путь к дериктории, в которой есть фото для обработки
4. Скрипт открывает каждый файл и заполняет то самое выделение, которое было выбрано в первом файле
5. Перезаписываем файл, закрываем и открываем следующий.

Заранее благодарен даже за отправку в google ;)
Lubuntu
Xubuntu

Оффлайн maks05

  • Старожил
  • *
  • Сообщений: 6786
    • Просмотр профиля
iaks, для этого лучше использовать RAW-конвертеры. В Darktable, например, можно в режиме "Обработка", включить модуль "Удаление пятен" (очень специфический "штамп"), а затем в режиме "Просмотр"=>"История изменений" скопировать эту самую историю и применить её к любому количеству фотографий (на сколько хватит оперативки). Там же можно создать из этой "истории" целый "стиль обработки" и сохранить для дальнейшей работы. Таким же образом можно обрабатывать TIFF и jpg.

Оффлайн iaks

  • Автор темы
  • Участник
  • *
  • Сообщений: 217
    • Просмотр профиля
В Darktable, например, можно в режиме "Обработка", включить модуль "Удаление пятен" (очень специфический "штамп"), а затем в режиме "Просмотр"=>"История изменений" скопировать эту самую историю и применить её к любому количеству фотографий (на сколько хватит оперативки)

Спасибо! Буду ковырять инструмент.
Вы не против, если у меня будет затык, я напишу вам в личку?
Lubuntu
Xubuntu

Оффлайн maks05

  • Старожил
  • *
  • Сообщений: 6786
    • Просмотр профиля
Вы не против, если у меня будет затык, я напишу вам в личку?
С одной стороны не против. Но с другой, я могу и не знать ответа на ваш вопрос, а кто-то знает. Да и по времени неизвестно, кто быстрее ответит. Так что, практичнее задавать вопросы в общий форум.
« Последнее редактирование: 02 Мая 2018, 08:23:26 от maks05 »

Оффлайн iaks

  • Автор темы
  • Участник
  • *
  • Сообщений: 217
    • Просмотр профиля
Блин, открыл Darktable - и что-то как-то завис.
Уж очень мудреный интерфейс после GIMPa  :idiot2:
Могли бы описать прям как для дурака step-by-step что делать?
Lubuntu
Xubuntu

Оффлайн maks05

  • Старожил
  • *
  • Сообщений: 6786
    • Просмотр профиля
Конкртно для вас можно, там не слишком сложно, но вообще лучше освоить самому - годная вещь.
И так:
1) Вверху справа должен быть выбран режим "Просмотр".
2) Тогда в левой панели, вверху, будет "Импорт".
3) В "Импорте" нажимаете "Из папки" - открывается окно загрузки. Грузит всё, что есть в данной папке. Загружаете.
4) В главном окне, по миниатюре загруженных фотографий, выбираете нужную и двойным щёлчком мыши запускаете её на обработку (вверху справа измениться режим).
5) В режиме "Обработка", внизу правой панели, будет раскрывающийся "Список модулей". Находите в нём "Удаление пятен". Если нажать слева от названия модуля, то появиться звёздочка, означающая, что модуль перемещён в "Избранные модули".
6) В правой панели, вверху, под гистограммой, будет горизонтальная линия значков, обозначающая вкладки инструментов. Заходите в "звёздочку": под ней будут названия избранных модулей. При нажатии на нужный раскроются его параметры, которые снабжены подсказкой, если навести на них курсор мыши.
7) Создаёте выделение (нечто среднее между "штампом" и "лассо"). Добиваетесь нужного эффекта. Повторяете на нужном количестве зон.
8 ) Когда обработка снимка закончена, переходите в режим "Просмотр". В правой панели, в разделе "История изменений" (нажать, что бы раскрыть список опций), выбираете "Скопировать".
9) Мышкой отмечаете фотографии, к которым нужно применить изменения, и в "Истории изменений" нажимаете "Вставить всё".
10) Там же, в "Стилях обработки", можно создать файл стиля и применить его к копиям обрабатываемых фотографий, которые создадутся автоматически при проставлении соответствующей галочки.
11) Там же, в режиме "Просмотр", в правой панели, нижней строкой обычно идёт "Экспорт выбранного". Соответственно, там выбираете опции по сохранению обработанного файла.
Если не трогать название папки, то программа сохранит результат в специально созданный подкаталог, относительно текущего для обрабатываемых фотографий.
12) Скорее всего все параметры экспорта не будут помещаться на экране, поэтому аккуратно перемещаете мышку в правый край правой панели на полосу прокрутки и скролите список параметров вниз. (На "пустом месте" прокрутка не сработает, на конкретном параметре вызовет его (параметра) изменение.) Нажимаете "Экспортировать".
« Последнее редактирование: 02 Мая 2018, 08:21:46 от maks05 »

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
iaks, Вы это пробовали?

Хотя... Вопрос снимается. Плагин heal-selection это дополнение видит, но вот настроить область выделения я способа не нахожу, а стало быть и применить плагин не удается. Sad but true...
« Последнее редактирование: 02 Мая 2018, 06:52:11 от zg_nico »
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Подняли интересную тему, давно собирался с этим поковыряться, однако моим типовым запросам обычно хватало imagemagic, поэтому до данного топика ничто особо не подстегивало эту тему форсировать. Ну да ладно. Поковырялся я со Script-fu, результатом ковыряния стал быдлокод скрипт, который я и предлагаю Вашему вниманию в качестве решения поднятой Вами проблемы, а именно - автоматическое восстановление конкретной области фильтром "Фильры" -> "Улучшение" -> "Восстановить выделение" (он же python-fu-heal-transparency). Для всех: прежде чем сувать этот скрипт к себе, удостоверьтесь что такой фильтр вообще доступен у Вас в редакторе. Если не доступен, то предварительно следует его установить; например, для этого достаточно установить пакет:
sudo apt install gimp-plugin-registryИсходник, на основе которого я писал предлагаемый скрипт, находится здесь. Его детально разбирали на хабре. Так что нам остается выполнить нижеописанное (опыт выполняю в Ubuntu Budgie 18.04, установлен Gimp 2.8.22 через apt [не snap-пакет и не еще какая-нибудь новомодная штука - там надо отдельно смотреть откуда он свои скрипты подтягивает]).
Как установить:
1. Создаем новый текстовый документ в правильном месте и с правильным именем. Это будет наш скрипт:
gedit $HOME/.gimp-2.8/scripts/resintizer_many_files.scmИсполняемым его делать не нужно - гимп и так его прекрасно видит.
2. В открывшемся окне текстового редактора вводим нижеприведенный код:
;сам скрипт:
(define (script-fu-resintizer-many-files inputFolder outputFolder x y width height samplingRadiusParam directionParam orderParam)
  (let* ((filelist (cadr (file-glob (string-append inputFolder DIR-SEPARATOR "*") 1))))
    ; обходим все файлы в исходной папке
    (while (not (null? filelist))
      (let* ((filename (car filelist))
          (image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
          (drawable (car (gimp-image-get-active-layer image)))
          (active-selection 0) )
(gimp-rect-select image x y width height CHANNEL-OP-REPLACE FALSE 0)    ;создаем на изображении прямоугольное выделение
;запускаем восстановление выделения
(python-fu-heal-selection RUN-NONINTERACTIVE image drawable samplingRadiusParam directionParam orderParam)
        ;задаем имя выходному файлу
        (set! filename (string-append outputFolder DIR-SEPARATOR (car (gimp-image-get-name image))))
        ;сохраняем результат в выходную папку
        (gimp-file-save RUN-NONINTERACTIVE image drawable filename  filename)
        (gimp-image-delete image)      ;закрываем изображение в редакторе
      )
      (set! filelist (cdr filelist)) ) ) )
;описание формы с параметрами скрипта:
(script-fu-register
 ;Имя скрипта, как его идентифицирует GIMP (должно совпадать с именем процедуры, которую вызывает скрипт)
 "script-fu-resintizer-many-files" 
 ;имя скрипта, как он будет отображаться в меню
 "Восстановить область в изображениях (пакетно)"
 ;описание скрипта
 "Выберите каталог для обработки, задайте параметры области, которую следует восстановить, и параметры восстановления этой области - каталог будет обработан автоматически"
 ;автор скрипта
 "zg_nico"
 ;копирайт
 "-=MADE-BY-NICO=-"
 ;дата выпуска
 "03/05/18"
 ;типы поддерживаемых цветовых моделей, не вводим ничего, - так скрипт будет доступен даже когда в GIMP не открыты изображения
 ""
 ;элементы управления, которые размещаются на форме (передаются нашему скрипту в порядке их объявления, имена перменным присвоены в самом заголовке главной процедуры скрипта, - так описываю, ибо для меня, к примеру, это дико):
        SF-DIRNAME "Каталог с изображениями, которые надо изменить" ""  ;inputFolder - входной каталог
        SF-DIRNAME "Каталог для сохранения изображений" "" ;outputFolder - выходной каталог
        SF-VALUE "Выделение: X верхнего левого угла выделения" "100"   ;x - координата левого верхнего угла выделения
        SF-VALUE "Выделение: Y верхнего левого угла выделения" "100"   ;y - координата левого верхнего угла выделения
        SF-VALUE "Выделение: ширина выделения" "400"   ;width - ширина области выделения
        SF-VALUE "Выделение: высота выделения" "400"   ;height - высота области выделения
        ;параметры нашего "умного восстановителя", которые будем применять к каждой картинке
        SF-VALUE "Радиус заимствования (в пикселях)" "50"      ;samplingRadiusParam - радиус заимствования в пикселях
        SF-OPTION "Источник данных" '("Всё вокруг" "Слева и справа" "Выше и ниже")     ;directionParam - истояник данных
        SF-OPTION "Направление отрисовки" '("Случайно" "Наружу от центра" "Внутрь к центру")   ;orderParam - направление отрисовки
)
;регистрация скрипта в интерфейсе GIMP:
(script-fu-menu-register
        "script-fu-resintizer-many-files"
        "<Image>/Filters/Мои скрипты"
)
Сохраняем изменения. Закрываем текстовый редактор.
3. Запускаем GIMP любым удобным для Вас способом (если был открыт - перезапустите, либо просто выполните команду меню "Фильтры" -> "Script-Fu" -> "Обновить сценарии"). В GIMP ищем меню "Фильтры" -> "Мои скрипты" -> "Восстановить область в изображениях (пакетно)".
Как пользовать:
Имею: папку по пути /home/ЮЗВЕРЬ/Тестовая, набитую до одури изображениями одного размера, на каждом из которых надо исправить заранее понятную область (прямоугольная, левая верхняя точка в позиции X=485, Y=295; размеры прямоугольника 330х330 - как раз перекроем центральное изображение в моем примере...)
Хочу: внести это исправление и сохранить все изображения в папку /home/ЮЗВЕРЬ/Выход.
Мои действия: открываю GIMP (не важно - открыты в нем какие-то изображения сейчас или нет), иду в меню "Фильтры" -> "Мои скрипты" -> "Восстановить область в изображениях (пакетно)". В появившемся окне заполняю должным образом поля:

4. Нажимаю на "Ок", жду некоторое время (зависит от того, насколько много изображений и насколько мощная у нас машина).
5. ...
6. Profit!

Из минусов:
1. Необходимость ввода параметров выделения РУКАМИ, что не кошерно и немного бесит. Как обойти - пока не понял. Есть мысль заставить пользователя открыть изображение, выбрать в нем область, и только потом вызывать это окошко, в котором уже указывать входную и выходную папки...
2. Нет проверок на ошибки. Если ввести область выделения больше чем само изображение - я слабо себе представляю что будет. Можете "побагтестить", если интересно ))
3. Код наверное криво оформлен, т.к. ну не писал я никогда на Script-fu до сих пор.
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 04 Мая 2018, 00:47:08 от zg_nico »
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн бамбук

  • Активист
  • *
  • Сообщений: 541
  • Kubuntu 20.04 LTS x86_64
    • Просмотр профиля
« Последнее редактирование: 04 Мая 2018, 10:13:55 от бамбук »
Chuwi LapBook 14.1   ревизия ноутбука-3.0

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн бамбук

  • Активист
  • *
  • Сообщений: 541
  • Kubuntu 20.04 LTS x86_64
    • Просмотр профиля
ты не хихикай  :2funny:
пиши в багфикс gimpa - дабы работало из каропки  :P
Chuwi LapBook 14.1   ревизия ноутбука-3.0

 

Страница сгенерирована за 0.059 секунд. Запросов: 25.