I am using OpenCV 3.1.0-dev and python 2.7.
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.
The first image is what I have and the 2nd image is the target.
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.
Here is my current code. I am trying to find the point to crop with
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 # (x,y) = top left coordinate & 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()
Any Help is Appreciated