I have a folder "Images-2" which has more than 100 sub folders, these sub folders consist of one image per folder. 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.
e.g def main
c:/Images-2/1/1.png (1 is the folder name, so I have 100 folders in Images-2)
if condition will save processed image(zero.png) in folder Images-2/1/
How will it work for 100 folders, 1 image each folder?
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. 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()