元の画像とバイナリ画像など、多くの画像を積み重ねる必要があるセグメンテーション アルゴリズムの結果を比較する必要があります。そこで、ディレクトリの名前を取り、含まれているすべての画像ファイルをレイヤーに配置して、GIMP でオンとオフを切り替えて結果を比較できるようにする GIMP スクリプトを考えました。GIMPでこれを達成する方法は? ヒントをありがとう!
よろしく
元の画像とバイナリ画像など、多くの画像を積み重ねる必要があるセグメンテーション アルゴリズムの結果を比較する必要があります。そこで、ディレクトリの名前を取り、含まれているすべての画像ファイルをレイヤーに配置して、GIMP でオンとオフを切り替えて結果を比較できるようにする GIMP スクリプトを考えました。GIMPでこれを達成する方法は? ヒントをありがとう!
よろしく
gimp2.8のコマンド「file」>「openaslayers」が同様の仕事をすることに気づきました。
「スクリプトフーではありません」。しかし、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()
コードの 2 番目の部分は、関数を登録するための単なるボイラープレートであることに注意してください。実際、「gimp_file_load_layers」の呼び出しは、Python からのものではないことを意図したオブジェクト「id」のリストを返すため、正常に機能しませんが、「Item.from_id」メソッドの呼び出しにより、これをバイパスできます。不便。これは gimp-2.8 でのみ利用可能ですが、
これを gimp 2.6 で機能させるには、ファイルを新しい画像で開く必要があり、レイヤーがターゲット画像にコピーされます。
上記のスクリプトを GIMP のプラグイン ディレクトリにコピーします (たとえば、*nix の下、~/.gimp-2.8/plug-ins - またはプラグイン フォルダーの GIMP 内の edit->prerencers->folders を確認します) - そして実行可能としてマークします。