def _get_cv_frame(self):
		frame = CameraInputProvider.get_frame(self)

		dst = cv.cvCreateImage(cv.cvSize(self.capture_dims[0],self.capture_dims[1]),frame.depth,frame.nChannels)
		cv.cvWarpPerspective( frame, dst, self.matrix)

		return dst
	def __init__(self,cam_num,capture_dims) :
		#Call CameraInputProvider constructor
		CameraInputProvider.__init__(self,cam_num,capture_dims)
		print self.scale

		self.image_dims=tuple((int(dim) for dim in self.capture_dims))

		self.storage = cvCreateMemStorage(0);

		self.color_thresh = 230
		self.grid = (7,7)

		self.n_points = self.grid[0]*self.grid[1]

		self.object_points = cv.cvCreateMat(self.n_points,3,cv.CV_32F)
		self.image_points = cv.cvCreateMat(self.n_points,2,cv.CV_32F)
	def _calibrate_camera(self) :
		source = CameraInputProvider.get_frame(self)

		success, corners = cv.cvFindChessboardCorners(source, cv.cvSize(self.grid[0],self.grid[1]))
		n_points = self.grid[0]*self.grid[1]

		grid_x = self.capture_dims[0]/self.grid[0]
		grid_y = self.capture_dims[1]/self.grid[1]
		dest = []
		for i in range(0,self.grid[0]) :
			for j in range(0,self.grid[1]) :
				dest.append((j*grid_x,i*grid_y))

		self.dest = dest

		s = cv.cvCreateMat(n_points,2,cv.CV_32F)
		d = cv.cvCreateMat(n_points,2,cv.CV_32F)
		p = cv.cvCreateMat(3,3,cv.CV_32F)

		for i in range(n_points):
			s[i,0] = corners[i].x
			s[i,1] = corners[i].y

			d[i,0] = dest[i][0]
			d[i,1] = dest[i][1]

		results = cv.cvFindHomography(s,d,p)

		self.matrix = p