title: Opencv Python Crop Image Using Numpy Array
body: <p>I am using OpenCV 3.1.0-dev and python 2.7. </p>
  
  <p>I am trying to crop out the black exterior of an image I have stitched. The struggle is that there are other pixels in the image that are black so cv2.findcontours returns a very interesting numpy array.</p>
  
  <p><a href="https://i.stack.imgur.com/vz1Bk.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/vz1Bk.jpg" alt="enter image description here"></a></p>
  
  <p>The first image is what I have and the 2nd image is the target.</p>
  
  <p>I was wondering if someone knew how to crop a polygon into the smallest square containing the entire image. The blue lines and points are the contours found by cv2.findContours. Is it possibly to find the top-left most point in the numpy array and the bottom-right most p0int in a numpy array that I can crop to? If so, how do I do it.</p>
  
  <p>Here is my current code. I am trying to find the point to crop with <code>cnt=contours[0]</code></p>
  
  <pre><code>import cv2
  import numpy as np
  
  img = cv2.imread("/Users/chrisradford/Documents/Research/ImagesToPass/masterToCrop.jpg",1)
  grayed = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
  (_,thresh) = cv2.threshold(grayed,1,255,cv2.THRESH_BINARY)
  result, contours, _= cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
  cnt = contours[0]
  # (x,y) = top left coordinate &amp; w,h = idth and height 
  x,y,w,h = cv2.boundingRect(cnt) #good
  cropped = img[y:y+h,x:x+w] #good
  cv2.drawContours(img,contours,-1,(255,0,0),3)
  cv2.imshow("result",img)
  cv2.imwrite('/Users/chrisradford/Documents/Research/ImagesToPass/StackOverflow.jpg',img)
  cv2.waitKey(0)
  cv2.destroyAllWindows()
  </code></pre>
  
  <p>Any Help is Appreciated</p>