PCG
PCG

Reputation: 2311

How to save files to a separate folder in current folder in Python?

I have the following python script which does image cropping based on cordinates.

for (i, c) in enumerate(cnts):
        #draw the bright spot on the image
        #(x, y, w, h) = cv2.boundingRect(c)

        ((cX, cY), radius) = cv2.minEnclosingCircle(c)
        cv2.circle(bgr_img, (int(cX), int(cY)), int(radius),(255, 0, 0), 1)
        crop_img = bgr_img[max(int(cY)-int(radius)-offset,0):max(int(cY)+int(radius)+offset,0),max(int(cX)-int(radius)-offset,0):max(int(cX)+int(radius)+offset,0)]
        cv2.imwrite('%s_%x_%x.jpg'%(image_file,int(cX),int(cY)),crop_img)
        #cv2.imshow("bump", crop_img)
        print(image_file, int(cX), int(cY), int(radius))

Currently, new cropped images are saved into main folder where the main image (image_file) resides. I would like to make a new folder in that directory and save the images into the new folder. I tried using os library but did not work. Any help ?

Upvotes: 0

Views: 58

Answers (1)

gmds
gmds

Reputation: 19905

Use os.mkdir:

cropped_dir = 'cropped_images'
os.mkdir(cropped_dir)

for (i, c) in enumerate(cnts):
        #draw the bright spot on the image
        #(x, y, w, h) = cv2.boundingRect(c)

        ((cX, cY), radius) = cv2.minEnclosingCircle(c)
        cv2.circle(bgr_img, (int(cX), int(cY)), int(radius),(255, 0, 0), 1)
        crop_img = bgr_img[max(int(cY)-int(radius)-offset,0):max(int(cY)+int(radius)+offset,0),max(int(cX)-int(radius)-offset,0):max(int(cX)+int(radius)+offset,0)]
        image_name = '{}_{}_{}.jpg'.format(image_file, cX, cY)
        image_path = os.path.join(cropped_dir, image_name)
        cv2.imwrite(image_path)
        #cv2.imshow("bump", crop_img)
        print(image_file, int(cX), int(cY), int(radius))

Upvotes: 1

Related Questions