parameters: (img, frames)
return_statement: return dst
docstring: Parameters
      ----------
      img: array-like
          Gray-scale image
      frames: numpy.ndarray
          each row has [col, row, orientation, scale] in this order
docstring_summary: Parameters
      ----------
      img: array-like
          Gray-scale image
      frames: numpy.ndarray
          each row has [col, row, orientation, scale] in this order
docstring_tokens: Parameters ---------- img : array - like Gray - scale image frames : numpy . ndarray each row has [ col row orientation scale ] in this order
function: def draw_sift_frames(img, frames):
      """
      Parameters
      ----------
      img: array-like
          Gray-scale image
      frames: numpy.ndarray
          each row has [col, row, orientation, scale] in this order
      """
      if len(img.shape) > 2:
          raise ValueError('input image should be gray-scale')
  
      keypoints = []
      for frame in frames:
          col, row, ori, scale = frame
          angle = ori / math.pi * 180
          kp = cv2.KeyPoint(x=col, y=row, _size=scale, _angle=angle)
          keypoints.append(kp)
      dst = cv2.drawKeypoints(img, keypoints,
                              flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
      return dst
function_tokens: def draw_sift_frames ( img , frames ) : if len ( img . shape ) > 2 : raise ValueError ( 'input image should be gray-scale' ) keypoints = [ ] for frame in frames : col , row , ori , scale = frame angle = ori / math . pi * 180 kp = cv2 . KeyPoint ( x = col , y = row , _size = scale , _angle = angle ) keypoints . append ( kp ) dst = cv2 . drawKeypoints ( img , keypoints , flags = cv2 . DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS ) return dst