title: How to extract multiple objects from an image using Python OpenCV?
body: <p>I am trying to extract object from an image using the color using OpenCV, I have tried by inverse thresholding and grayscale combined with <code>cv2.findContours()</code> but I am unable to use it recursively. Furthermore I can't figure out how to "cut out" the match from the original image and save it to a single file. </p>
  
  <p><a href="https://i.stack.imgur.com/iYjEj.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/iYjEj.jpg" alt="enter image here"></a></p>
  
  <h1>EDIT</h1>
  
  <pre><code>~
  import cv2
  import numpy as np
  
  # load the images
  empty = cv2.imread("empty.jpg")
  full = cv2.imread("test.jpg")
  
  # save color copy for visualization
  full_c = full.copy()
  
  # convert to grayscale
  empty_g = cv2.cvtColor(empty, cv2.COLOR_BGR2GRAY)
  full_g = cv2.cvtColor(full, cv2.COLOR_BGR2GRAY)
  
  empty_g = cv2.GaussianBlur(empty_g, (51, 51), 0)
  full_g = cv2.GaussianBlur(full_g, (51, 51), 0)
  diff = full_g - empty_g
  
  #  thresholding
  
  diff_th = 
  cv2.adaptiveThreshold(full_g,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 
  cv2.THRESH_BINARY,11,2)
  
  # combine the difference image and the inverse threshold
  zone = cv2.bitwise_and(diff, diff_th, None)
  
  # threshold to get the mask instead of gray pixels
  _, zone = cv2.threshold(bag, 100, 255, 0)
  
  # dilate to account for the blurring in the beginning
  kernel = np.ones((15, 15), np.uint8)
  bag = cv2.dilate(bag, kernel, iterations=1)
  
  # find contours, sort and draw the biggest one
  contours, _ = cv2.findContours(bag, cv2.RETR_TREE,
                                cv2.CHAIN_APPROX_SIMPLE)
  contours = sorted(contours, key=cv2.contourArea, reverse=True)[:3]
  i = 0
  while i &lt; len(contours):
      x, y, width, height = cv2.boundingRect(contours[i])
      roi = full_c[y:y+height, x:x+width]
      cv2.imwrite("piece"+str(i)+".png", roi)
      i += 1
  </code></pre>
  
  <p>Where empty is just a white image size 1500 * 1000 as the one above and test is the one above.</p>
  
  <p>This is what I came up with, only downside, I have a third image instead of only the 2 expected showing a shadow zone now... </p>