简体   繁体   English

迭代文件夹一次打开,处理和保存图像

[英]Iterative folder open, process and save image one by one

I have a folder "Images-2" which has more than 100 sub folders, these sub folders consist of one image per folder. 我有一个文件夹“ Images-2”,其中有100多个子文件夹,这些子文件夹每个文件夹包含一个图像。 def main() opens each image, and def run(img) takes the image and processes it, but now I am unable to save that image in it's sub folder. def main()打开每个图像,而def run(img)提取图像并对其进行处理,但是现在我无法将该图像保存在其子文件夹中。

eg def main c:/Images-2/1/1.png (1 is the folder name, so I have 100 folders in Images-2) 例如def main c:/Images-2/1/1.png(1是文件夹名称,所以我在Images-2中有100个文件夹)

if condition will save processed image(zero.png) in folder Images-2/1/ 如果条件将已处理的图像(zero.png)保存在Images-2 / 1 /文件夹中

How will it work for 100 folders, 1 image each folder? 如何处理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()

You are calling os.walk twice. 您两次调用os.walk That is your problem. 那是你的问题。 This is what I meant in my comment: 这就是我在评论中的意思:

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()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM