class_docstr: Container for all keypoints on a single image.
  
  Parameters
  ----------
  keypoints : list of imgaug.augmentables.kps.Keypoint
      List of keypoints on the image.
  
  shape : tuple of int
      The shape of the image on which the objects are placed, i.e. the
      result of ``image.shape``.
      Should include the number of channels, not only height and width.
  
  Examples
  --------
  >>> import numpy as np
  >>> from imgaug.augmentables.kps import Keypoint, KeypointsOnImage
  >>>
  >>> image = np.zeros((70, 70))
  >>> kps = [Keypoint(x=10, y=20), Keypoint(x=34, y=60)]
  >>> kps_oi = KeypointsOnImage(kps, shape=image.shape)
class_docstr_tok: ["Container","for","all","keypoints","on","a","single","image",".","Parameters","--","--","--","--","--","keypoints",":","list","of","imgaug.augmentables.kps.Keypoint","List","of","keypoints","on","the","image",".","shape",":","tuple","of","int","The","shape","of","the","image","on","which","the","objects","are","placed",",","i.e",".","the","result","of","``","image.shape","``",".","Should","include","the","number","of","channels",",","not","only","height","and","width",".","Examples","--","--","--","--",">",">",">","import","numpy","as","np",">",">",">","from","imgaug.augmentables.kps","import","Keypoint",",","KeypointsOnImage",">",">",">",">",">",">","image","=","np.zeros","(","(","70",",","70",")",")",">",">",">","kps","=","[","Keypoint","(","x=10",",","y=20",")",",","Keypoint","(","x=34",",","y=60",")","]",">",">",">","kps_oi","=","KeypointsOnImage","(","kps",",","shape=image.shape",")"]
docstr: Project all keypoints from one image shape to a new one in-place.
  
  Added in 0.4.0.
  
  Parameters
  ----------
  image : ndarray or tuple of int
      New image onto which the keypoints are to be projected.
      May also simply be that new image's shape tuple.
  
  Returns
  -------
  imgaug.augmentables.kps.KeypointsOnImage
      Object containing all projected keypoints.
      The object may have been modified in-place.
docstr_tok: ["Project","all","keypoints","from","one","image","shape","to","a","new","one","in-place",".","Added","in","0.4.0",".","Parameters","--","--","--","--","--","image",":","ndarray","or","tuple","of","int","New","image","onto","which","the","keypoints","are","to","be","projected",".","May","also","simply","be","that","new","image","'s","shape","tuple",".","Returns","--","--","--","-","imgaug.augmentables.kps.KeypointsOnImage","Object","containing","all","projected","keypoints",".","The","object","may","have","been","modified","in-place","."]
code: def on_(self, image):
      """Project all keypoints from one image shape to a new one in-place.
  
      Added in 0.4.0.
  
      Parameters
      ----------
      image : ndarray or tuple of int
          New image onto which the keypoints are to be projected.
          May also simply be that new image's shape tuple.
  
      Returns
      -------
      imgaug.augmentables.kps.KeypointsOnImage
          Object containing all projected keypoints.
          The object may have been modified in-place.
  
      """
      # pylint: disable=invalid-name
      on_shape = normalize_imglike_shape(image)
      if on_shape[0:2] == self.shape[0:2]:
          self.shape = on_shape  # channels may differ
          return self
  
      for i, kp in enumerate(self.keypoints):
          self.keypoints[i] = kp.project_(self.shape, on_shape)
      self.shape = on_shape
      return self
  
imports: from __future__ import print_function, division, absolute_import
  import numpy
  import scipy.spatial.distance
  import six.moves
  from ..None import imgaug
  from .base import IAugmentable
  from .utils import normalize_imglike_shape, project_coords, _remove_out_of_image_fraction_, _handle_on_image_shape
label_desc: Use image node_id 7 for calling the KeypointsOnImage obj's underlying member method code with example usage: obj.on_(image) and returns: self, self