code: def interactive_imshow(img, lclick_cb=None, rclick_cb=None, **kwargs):
      """
      Args:
          img (np.ndarray): an image (expect BGR) to show.
          lclick_cb, rclick_cb: a callback ``func(img, x, y)`` for left/right click event.
          kwargs: can be {key_cb_a: callback_img, key_cb_b: callback_img}, to
              specify a callback ``func(img)`` for keypress.
  
      Some existing keypress event handler:
  
      * q: destroy the current window
      * x: execute ``sys.exit()``
      * s: save image to "out.png"
      """
      name = "tensorpack_viz_window"
      cv2.imshow(name, img)
  
      def mouse_cb(event, x, y, *args):
          if event == cv2.EVENT_LBUTTONUP and lclick_cb is not None:
              lclick_cb(img, x, y)
          elif event == cv2.EVENT_RBUTTONUP and rclick_cb is not None:
              rclick_cb(img, x, y)
  
      cv2.setMouseCallback(name, mouse_cb)
      key = cv2.waitKey(-1)
      while key >= 128:
          key = cv2.waitKey(-1)
      key = chr(key & 0xFF)
      cb_name = "key_cb_" + key
      if cb_name in kwargs:
          kwargs[cb_name](img)
      elif key == "q":
          cv2.destroyWindow(name)
      elif key == "x":
          sys.exit()
      elif key == "s":
          cv2.imwrite("out.png", img)
      elif key in ["+", "="]:
          img = cv2.resize(
              img, None, fx=1.3, fy=1.3, interpolation=cv2.INTER_CUBIC
          )
          interactive_imshow(img, lclick_cb, rclick_cb, **kwargs)
      elif key == "-":
          img = cv2.resize(
              img, None, fx=0.7, fy=0.7, interpolation=cv2.INTER_CUBIC
          )
          interactive_imshow(img, lclick_cb, rclick_cb, **kwargs)
  
file_path: tensorpack/tensorpack/utils/viz.py
imports: import numpy
  import os
  import sys
  from ..utils.develop import create_dummy_func
  from .argtools import shape2d
  from .fs import mkdir_p
label_desc: Use image node_id 1 for calling a global function with example usage: interactive_imshow(img, lclick_cb, rclick_cb) without return types