code: def run(self, input):
      print("run")
      self.reset()
      input = self.input
      self.input.dirname = self.dirname
      if self.input.dirname == "" and self.input == self.video:
          print("choose a video first")
          # self.statusBar.showMessage("choose a video first",5000)
          return
      if self.status == False:
          self.status = True
          input.start()
          self.btnStart.setText("Stop")
          self.cbbInput.setEnabled(False)
          self.btnOpen.setEnabled(False)
          self.lblHR2.clear()
          while self.status == True:
              self.main_loop()
  
      elif self.status == True:
          self.status = False
          input.stop()
          self.btnStart.setText("Start")
          self.cbbInput.setEnabled(True)
  
imports: import cv2
  import numpy
  from PyQt5 import QtCore
  from PyQt5.QtCore import QThread
  from PyQt5.QtGui import QFont, QImage, QPixmap
  from PyQt5.QtWidgets import QPushButton, QApplication, QComboBox, QLabel, QFileDialog, QStatusBar, QDesktopWidget, QMessageBox, QMainWindow
  import pyqtgraph
  import sys
  import time
  from process import Process
  from webcam import Webcam
  from video import Video
  from interface import waitKey, plotXY
label_desc: Use image node_id 11 for calling the GUI obj's underlying member method code with example usage: obj.run(input) without return types