1

私は100を超えるサブフォルダを持つ "Images-2"というフォルダを持っています。これらのサブフォルダはフォルダごとに1つの画像で構成されています。 def main()は各画像を開き、def run(img)は画像を取り込んで処理しますが、その画像をそのサブフォルダに保存することはできません。反復フォルダを開き、画像を1つずつ処理して保存します

例えばdef main C:/Images-2/1/1.png(1フォルダ名ですので、私は画像-2で100個のフォルダを持っている)

条件場合には、(ゼロを処理した画像を保存します。 png)画像-2/1/

どのように100個のフォルダ、1個の画像ごとに動作しますか?

def run(img): 
    data = img.load() 
    width, height = img.size 
    output_img = Image.new("RGB", (100, 100)) 
    Zero=np.zeros(shape=(100, 100),dtype=np.uint8) 

    for (x, y) in labels: 
      component = uf.find(labels[(x, y)]) 
      labels[(x, y)] = component 
      path='C:/Python27/cclabel/Images-2/' 
      if labels[(x, y)]==0: 
       Zero[y][x]=int(255) 
       Zeroth = Image.fromarray(Zero) 
       for root, dirs in os.walk(path): 
        print root 
        print dirs 
        Zeroth.save(path+'Zero'+'.png','png') 
def main(): 
    # Open the image 
    path="C:/Python27/cclabel/Images-2/" 
    for root, dirs, files in os.walk(path): 
     for file_ in files: 
      img = Image.open(os.path.join(root, file_)) 
      img = img.point(lambda p: p > 190 and 255) 
      img = img.convert('1') 
      (labels, output_img) = run(img) 

if __name__ == "__main__": main() 
+0

ここで、 'run'の変数' labels'はどこに定義されていますか?私はあなたが '実行'に 'root'を渡し、' run'から 'os.walk'を削除し、' Zeroth.save(os.path.join(root、 'Zero.png')、 'png') 'を実行して、画像をロードしたのと同じディレクトリに「ゼロ」画像を保存します。 –

+0

thats問題は正しいパスに保存できません。最後のフォルダイメージを処理してすべてのフォルダに保存しています –

答えて

0

os.walkを2回呼び出しています。それがあなたの問題です。これは私のコメントの意味です:

def run(dirname, img): 
    data = img.load() 
    width, height = img.size 
    output_img = Image.new("RGB", (100, 100)) 
    Zero=np.zeros(shape=(100, 100), dtype=np.uint8) 

    for (x, y) in labels: 
     component = uf.find(labels[(x, y)]) 
     labels[(x, y)] = component 
     path = 'C:/Python27/cclabel/Images-2/' 
     if labels[(x, y)] == 0: 
      Zero[y][x] = 255 
      Zeroth = Image.fromarray(Zero) 
      Zeroth.save(os.path.join(dirname, 'Zero.png'), 'png') 


def main(): 
    path = "C:/Python27/cclabel/Images-2/" 
    for root, dirs, files in os.walk(path): 
     for file_ in files: 
      img = Image.open(os.path.join(root, file_)) 
      img = img.point(lambda p: p > 190 and 255) 
      img = img.convert('1') 
      (labels, output_img) = run(root, img) 


if __name__ == "__main__": 
    main() 
+0

エラー:format = EXTENSION [ext] KeyError: '' –

+0

最初のものはちょうど混乱です私のポストでそれを修正しました。 2番目のコメントについて:どういう意味ですか?少し詳しく教えていただけますか? –

+0

ありがとうそれは完全に働いた –

関連する問題