コード例 #1
0
from improcflow.logic import Element, register_element_type

class PythonAddition(Element):
  class_name = "python_addition"
  
  def __init__(self, title = None, element_model = None):
    super(PythonAddition, self).__init__(title = title, element_model = element_model)
    self.term1 = self.add_input_connector(title = "term1")
    self.term2 = self.add_input_connector(title = "term2")
    self.sum = self.add_output_connector(title = "sum")
  
  def run(self, debug = False):
    self.sum.set_value(self.term1.value + self.term2.value)
    
register_element_type(PythonAddition)


class PythonSubtraction(Element):
  class_name = "python_subtraction"
  
  def __init__(self, title = None, element_model = None):
    super(PythonSubtraction, self).__init__(title = title, element_model = element_model)
    self.term1 = self.add_input_connector(title = "term1")
    self.term2 = self.add_input_connector(title = "term2")
    self.difference = self.add_output_connector(title = "difference")
  
  def run(self, debug = False):
    self.difference.set_value(self.term1.value - self.term2.value)
    
register_element_type(PythonSubtraction)
コード例 #2
0
from improcflow.logic import Element, register_element_type

import numpy
import cv2

class OpenCVMean(Element):
  class_name = "opencv_mean"
  
  def __init__(self, title = None, element_model = None):
    super(OpenCVMean, self).__init__(title = title, element_model = element_model)
    self.src = self.add_input_connector(title = "src", data_types = [numpy.ndarray])
    self.mean = self.add_output_connector(title = "mean")
    
  def run(self, debug = False):
    avg_list = cv2.mean(self.src.value)
    self.mean.set_value(avg_list[0])
    
register_element_type(OpenCVMean)
コード例 #3
0
ファイル: flow.py プロジェクト: pjaytycy/improcflow
      print self.title, ":: run() :: iteration", iteration
      print
    
    elements_done = 0
    for element in self.elements:
      if element.is_ready() and not element.is_done():
        if debug:
          print self.title, "  execute element :", element
        element.run_or_block(debug = debug)
        elements_done += 1

    if debug:
      print
      print self.title, "  elements_done =", elements_done
      print
    
    if elements_done == 0:
      return True
    
    return self.run(iteration + 1, debug = debug)
  

  def debug_state(self):
    print "==== FLOW : %s ====" % self.title
    super(Flow, self).debug_state()
    for element in self.elements:
      element.debug_state()
    print "==== ===="

register_element_type(Flow)
コード例 #4
0
ファイル: control_flow.py プロジェクト: pjaytycy/improcflow
    
    return (num_inputs_not_blocked != 1)
  
  
  def run(self, debug = False):
    input_ok = None
    for input in self.input_datas:
      if not input.is_blocked():
        if input_ok is None:
          input_ok = input
        else:
          print "2 or more inputs are not blocked!"
    self.output.set_value(input_ok.value)
  
  
register_element_type(ConditionalAssignment)


def create_loop(title = None):
  loop_group = ElementGroup(title = title)
  
  if title is None:
    start = LoopStart()
    stop = LoopStop()
  else:
    start = LoopStart(title = title + "_start")
    stop = LoopStop(title = title + "_stop")
    
  loop_group.add_element(start)
  loop_group.add_element(stop)
  
コード例 #5
0
ファイル: io_functions.py プロジェクト: pjaytycy/improcflow
  def __init__(self, title = None, element_model = None):
    super(InputData, self).__init__(title = title, element_model = element_model)
    self.data_in = self.add_input_connector(title = "data_in")
    self.data = self.add_output_connector(title = "data")

  def set_value(self, src):
    self.data_in.set_value(src)
    if self.flow:
      self.flow.invalidate_chain(self.data)
    else:
      self.data.invalidate_connector()
  
  def run(self, debug = False):
    self.data.set_value(self.data_in.value)
    
register_element_type(InputData)



class OutputData(Element):
  class_name = "output_data"
  
  def __init__(self, title = None, element_model = None):
    super(OutputData, self).__init__(title = title, element_model = element_model)
    self.data = self.add_input_connector(title = "data")
    self.data_out = self.add_output_connector(title = "data_out")
      
  def result(self):
    if self.is_ready() and not self.is_blocked():
      return self.data.value
    return None