2012-06-12 3 views
2

Мне нужно сравнить результаты алгоритмов сегментации, где нужно собрать много изображений - например, оригинальное и двоичное изображение. Поэтому я подумал о сценарии GIMP, который берет имя каталога и помещает все содержащие файлы изображений в слои, чтобы их можно было включать и отключать в GIMP для сравнения результатов. Как добиться этого с помощью GIMP? Спасибо за советы!GIMP: Создайте стек изображений из всех файлов изображений в папке

С уважением

ответ

3

«Не со скриптом-фу». Но Python подходит для ваших нужд. Это простой сценарий - основная логика должна быть 4 линии или около того, поэтому я просто пишу это здесь для вас:

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

from gimpfu import * 
import os 

def load_images_in_dir(image, drw, path): 

    for filename in os.listdir(path): 
     try: 
      if filename.lower().split(".")[-1] in ("png", "jpg"): 
       #import pdb as debug; debug.set_trace() 
       image_id, layer_ids = pdb.gimp_file_load_layers(image, 
        os.path.join(path, filename)) 
       for id in layer_ids: 
        new_layer = gimp.Item.from_id(id) 
        pdb.gimp_image_add_layer(image, new_layer, 0) 
     except Exception, error: 
      print error 



register(
     "open_images_in_dir", 
     "Open all files in a directory", 
     "Open all files in a directory", 
     "Joao S. O. Bueno", 
     "Joao S. O. Bueno", 
     "2012. Creative Commons Citation Needed license", 
     "Open Images in Dir as Layers...", 
     "*", 
     [(PF_IMAGE, "image", "the image", None), 
     (PF_DRAWABLE, "drw", "the drawable", None), 
     (PF_DIRNAME,"path", "Directory to Open", "."),], 
     [], 
     load_images_in_dir, 
     menu="<Image>/File/") 

main() 

Обратите внимание, что вторая часть коды просто шаблонная для регистрации функции. Действительно - вызов «gimp_file_load_layers» не работает должным образом - поскольку он возвращает список объектов «id», которые не должны казаться из Python, но вызов метода «Item.from_id» позволяет обходить это неудобство. Это доступно только в gimp-2.8, хотя

Чтобы заставить это работать в gimp 2.6, вам придётся приступить к открытию файла в новом изображении, и они скопируют слой (ы) на ваш целевой образ.

Скопируйте сценарий выше в каталог плагинов GIMP (например, в * nix, ~/.gimp-2.8/plug-ins, или - в папке GIMP для подключаемого модуля) папка) - и отметьте его как исполняемый файл.

3

Я только что понял, что команда «файл»> «открыть как слои» в gimp 2.8 делает аналогичную работу!

Смежные вопросы