code: def find_chessboard(self, sx=6, sy=9):
          
          # termination criteria
          criteria = (cv2.TERM_CRITERIA_EPS +
                      cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
  
          # prepare object points, like (0,0,0), (1,0,0), (2,0,0) ....,(6,5,0)
          objp = np.zeros((sx * sy, 3), np.float32)
          objp[:, :2] = np.mgrid[0:sx, 0:sy].T.reshape(-1, 2)
  
          # Arrays to store object points and image points from all the images.
          objpoints = []  # 3d point in real world space
          imgpoints = []  # 2d points in image plane.
  
          # create images
          img = self.data.astype(np.uint8)
          gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
          img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
  
          # Find the chess board corners
          ret, corners = cv2.findChessboardCorners(gray, (sx, sy), None)
  
          # If found, add object points, image points (after refining them)
          if ret:
              objpoints.append(objp)
              cv2.cornerSubPix(gray, corners, (11, 11), (-1, -1), criteria)
              imgpoints.append(corners)
  
              if corners is not None:
                  return corners.squeeze()
          return None
docs: Finds the corners of an sx X sy chessboard in the image.
  
          Parameters
          ----------
          sx : int
              Number of chessboard corners in x-direction.
          sy : int
              Number of chessboard corners in y-direction.
  
          Returns
          -------
          :obj:`list` of :obj:`numpy.ndarray`
              A list containing the 2D points of the corners of the detected
              chessboard, or None if no chessboard found.