I am trying to extract image files from one sub folder "input" (10th line) and process it and then save it into another subfolder "output" (10th last line), but the processed files are not being saved. But if I take all the image files from the same folder where the code is saved (not writing input in the extraction command in 10th line), then when I save it in the subfolder "output", I'm successful. Just do remember the note; in both cases the processed files are being displayed and are the same, just not being saved in one case.
import glob
import cv2
import numpy as np
import matplotlib.pyplot as plt
# initialize data and target as lists
data = []
target = []
# find all bmp files in the current folder
Files = glob.glob("input/*.bmp")
# go through all files and fit contour
for f in Files:
img = 255-cv2.imread(f,0) #0 for grayscale
white=cv2.imread("white.bmp")
# add image to the list
data.append(img)
# make lines thicker
kernel = np.ones((5,5),np.uint8)
img = cv2.dilate(img,kernel,iterations = 1)
# contour application
ret,thresh = cv2.threshold(img,127,255,0)
im2,contours,hierarchy = cv2.findContours(thresh, 1, 2)
# sort contours by area
areas = [cv2.contourArea(cnt) for cnt in contours]
idx = np.argsort(areas)[::-1]
contours = np.asarray(contours)[idx]
for cnt in contours:
(x,y),radius = cv2.minEnclosingCircle(cnt)
if radius < img.shape[0]-10 and radius > 20:
cv2.circle(white,(int(x),int(y)),int(radius),0,4)
break
plt.imshow(white)
#save the files to output folder with the name "Image_x"
filename = "output/Image_%s" %f
plt.colorbar()
# live image display
plt.draw()
# need to add pause command, otherwise it does not work
plt.pause(.01)
# clear the figure to avoid memory issues
plt.clf()
#save these contours (outputs) as bmps with same file names
cv2.imwrite(filename,white)