class_docstr: Draw hand pose estimation results on canvas.
  Args:
      show_number(bool): Whether to show estimation ids in canvas, default is False.
code: def __call__(self, canvas: np.ndarray, all_hand_peaks: list):
      fig = Figure(figsize=plt.figaspect(canvas))
  
      fig.subplots_adjust(0, 0, 1, 1)
      fig.subplots_adjust(bottom=0, top=1, left=0, right=1)
      bg = FigureCanvas(fig)
      ax = fig.subplots()
      ax.axis("off")
      ax.imshow(canvas)
  
      width, height = ax.figure.get_size_inches() * ax.figure.get_dpi()
  
      for peaks in all_hand_peaks:
          for ie, e in enumerate(self.edges):
              if np.sum(np.all(peaks[e], axis=1) == 0) == 0:
                  x1, y1 = peaks[e[0]]
                  x2, y2 = peaks[e[1]]
                  ax.plot(
                      [x1, x2],
                      [y1, y2],
                      color=matplotlib.colors.hsv_to_rgb(
                          [ie / float(len(self.edges)), 1.0, 1.0]
                      ),
                  )
  
          for i, keyponit in enumerate(peaks):
              x, y = keyponit
              ax.plot(x, y, "r.")
              if self.show_number:
                  ax.text(x, y, str(i))
      bg.draw()
      canvas = np.frombuffer(bg.tostring_rgb(), dtype="uint8").reshape(
          int(height), int(width), 3
      )
      return canvas
  
imports: import os
  import math
  import base64
  from typing import Callable
  import cv2
  import numpy
  import matplotlib
  from matplotlib import pyplot
  from matplotlib.figure import Figure
  from matplotlib.backends.backend_agg import FigureCanvasAgg
label_desc: Use image node_id 2 for calling the DrawHandPose obj's underlying member method code with example usage: obj.__call__(canvas, all_hand_peaks) and returns: canvas