code: def _update_frame(self, trainable, arrays, frame, config):
      final_image = self._get_final_image(
          config, trainable, arrays, frame
      )
      self._write_summary(final_image)
      self.last_image_shape = final_image.shape
  
      return final_image
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from ..proto.summary_pb2 import Summary
  from ..proto.summary_pb2 import SummaryMetadata
  from ..proto.tensor_pb2 import TensorProto
  from ..proto.tensor_shape_pb2 import TensorShapeProto
  import os
  import time
  import numpy
  from .file_system_tools import read_pickle, write_pickle, write_file
  from .shared_config import PLUGIN_NAME, TAG_NAME, SUMMARY_FILENAME, DEFAULT_CONFIG, CONFIG_FILENAME, SUMMARY_COLLECTION_KEY_NAME, SECTION_INFO_FILENAME
  from .None import video_writing
label_desc: Use image node_id 7 for calling the Beholder obj's underlying member method code with example usage: obj._update_frame(trainable, arrays, frame, config) and returns: final_image