TIOVX User Guide
node.py
1 #
2 # Copyright (c) 2017 Texas Instruments Incorporated
3 #
4 # All rights reserved not granted herein.
5 #
6 # Limited License.
7 #
8 # Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
9 # license under copyrights and patents it now or hereafter owns or controls to make,
10 # have made, use, import, offer to sell and sell ("Utilize") this software subject to the
11 # terms herein. With respect to the foregoing patent license, such license is granted
12 # solely to the extent that any such patent is necessary to Utilize the software alone.
13 # The patent license shall not apply to any combinations which include this software,
14 # other than combinations with devices manufactured by or for TI ("TI Devices").
15 # No hardware patent is licensed hereunder.
16 #
17 # Redistributions must preserve existing copyright notices and reproduce this license
18 # (including the above copyright notice and the disclaimer and (if applicable) source
19 # code license limitations below) in the documentation and/or other materials provided
20 # with the distribution
21 #
22 # Redistribution and use in binary form, without modification, are permitted provided
23 # that the following conditions are met:
24 #
25 # No reverse engineering, decompilation, or disassembly of this software is
26 # permitted with respect to any software provided in binary form.
27 #
28 # any redistribution and use are licensed by TI for use only with TI Devices.
29 #
30 # Nothing shall obligate TI to provide you with source code for the software
31 # licensed and provided to you in object code.
32 #
33 # If software source code is provided to you, modification and redistribution of the
34 # source code are permitted provided that the following conditions are met:
35 #
36 # any redistribution and use of the source code, including any resulting derivative
37 # works, are licensed by TI for use only with TI Devices.
38 #
39 # any redistribution and use of any object code compiled from the source code
40 # and any resulting derivative works, are licensed by TI for use only with TI Devices.
41 #
42 # Neither the name of Texas Instruments Incorporated nor the names of its suppliers
43 #
44 # may be used to endorse or promote products derived from this software without
45 # specific prior written permission.
46 #
47 # DISCLAIMER.
48 #
49 # THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
50 # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
51 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
52 # IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
53 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
54 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
55 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
56 # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
57 # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
58 # OF THE POSSIBILITY OF SUCH DAMAGE.
59 #
60 #
61 
62 from . import *
63 
64 
290 class Node (Reference) :
291 
295  def __init__(self, kernel, *args) :
296  Reference.__init__(self, Type.NODE, "default")
297  self.kernel = kernel
298  self.ref = []
299  self.param_dir = []
300  self.target = Target.DEFAULT
301  for arg in args :
302  self.ref.append(arg)
303  self.num_in = 0
304  self.num_out = 0
305  self.vx_kernel_enum = "VX_KERNEL_"
306 
307 
313  def checkParams(self, *param_type_args) :
314  assert (len(param_type_args) == (self.num_in + self.num_out)), 'Expected %d arguments but %d provided' % (len(param_type_args), (self.num_in + self.num_out))
315  for i in range(0, len(param_type_args)) :
316  assert (self.ref[i].type == param_type_args[i]), 'Parameter %d: Expected %s but %s is provided' % (i, param_type_args[i], self.ref[i].type)
317 
318 
327  def setParams(self, num_in, num_out, *param_type_args) :
328  self.num_in = num_in
329  self.num_out = num_out
330  for i in range(0, self.num_in) :
331  self.param_dir.append(Direction.INPUT)
332  for i in range(0, self.num_out) :
333  self.param_dir.append(Direction.OUTPUT)
334  self.checkParams(*param_type_args)
335 
336 
339  def setTarget(self, target):
340  self.target = target
341 
342  def __str__(self):
343  print_str = Reference.__str__(self) + ' [ ' + self.kernel + ' ] '
344  idx = 0
345  for ref in self.ref :
346  print_str = print_str + '\n' + str(idx) + ': ' + str(ref)
347  idx = idx + 1
348  return print_str
349 
350 
354  def setKernelEnumName(self, kernel_enum_name) :
355  self.vx_kernel_enum = kernel_enum_name
356 
357  def get_vx_kernel_enum(self) :
358  return self.vx_kernel_enum
359 
360 
366 class NodeAbsDiff (Node) :
367 
376  def __init__(self, image_in1, image_in2, image_out3, name="default", target=Target.DEFAULT) :
377  Node.__init__(self, "org.khronos.openvx.absdiff", image_in1, image_in2, image_out3)
378  self.setParams(2, 1, Type.IMAGE, Type.IMAGE, Type.IMAGE)
379  self.setTarget(target)
380  self.setKernelEnumName("VX_KERNEL_ABSDIFF");
381 
382  def checkParams(self, *param_type_args) :
383  Node.checkParams(self, *param_type_args)
384  # additional error conditions over the basic ones
385  assert ( self.ref[0].df_image == self.ref[1].df_image ), "Inputs MUST have same image data format"
386  assert ( self.ref[1].df_image == self.ref[2].df_image ), "Inputs and Output MUST have same image data format"
387  assert ( self.ref[0].df_image == DfImage.U8 or self.ref[0].df_image == DfImage.S16 ), "Image data format must be either U8 or S16"
388 
389 #TODO BIDI
390 
397 
403  def __init__(self, image_in1, image_inout2, name="default", target=Target.DEFAULT) :
404  Node.__init__(self, "org.khronos.openvx.accumulate", image_in1, image_inout2, image_inout2)
405  self.setParams(2, 1, Type.IMAGE, Type.IMAGE, Type.IMAGE)
406  self.setTarget(target)
407  self.setKernelEnumName("VX_KERNEL_ACCUMULATE");
408 
409  def checkParams(self, *param_type_args) :
410  Node.checkParams(self, *param_type_args)
411  # additional error conditions over the basic ones
412  assert ( self.ref[0].df_image == DfImage.U8 ), "Input image data format must be U8"
413  assert ( self.ref[1].df_image == DfImage.S16 ), "In/out image data format must be S16"
414 
415 #TODO BIDI
416 
423 
430  def __init__(self, image_in1, shift_in2, image_inout3, name="default", target=Target.DEFAULT) :
431  Node.__init__(self, "org.khronos.openvx.accumulate_square", image_in1, shift_in2, image_inout3, image_inout3)
432  self.setParams(3, 1, Type.IMAGE, Type.SCALAR, Type.IMAGE, Type.IMAGE)
433  self.setTarget(target)
434  self.setKernelEnumName("VX_KERNEL_ACCUMULATE_SQUARE");
435 
436  def checkParams(self, *param_type_args) :
437  Node.checkParams(self, *param_type_args)
438  # additional error conditions over the basic ones
439  assert ( self.ref[0].df_image == DfImage.U8 ), "Input image data format must be U8"
440  assert ( self.ref[2].df_image == DfImage.S16 ), "In/out image data format must be S16"
441 
442 #TODO BIDI
443 
450 
457  def __init__(self, image_in1, alpha_in2, image_inout3, name="default", target=Target.DEFAULT) :
458  Node.__init__(self, "org.khronos.openvx.accumulate_weighted", image_in1, alpha_in2, image_inout3, image_inout3)
459  self.setParams(3, 1, Type.IMAGE, Type.SCALAR, Type.IMAGE, Type.IMAGE)
460  self.setTarget(target)
461  self.setKernelEnumName("VX_KERNEL_ACCUMULATE_WEIGHTED");
462 
463  def checkParams(self, *param_type_args) :
464  Node.checkParams(self, *param_type_args)
465  # additional error conditions over the basic ones
466  assert ( self.ref[0].df_image == DfImage.U8 ), "Input image data format must be U8"
467  assert ( self.ref[2].df_image == DfImage.U8 ), "In/out image data format must be U8"
468 
469 
475 class NodeAdd (Node) :
476 
486  def __init__(self, image_in1, image_in2, policy3, image_out4, name="default", target=Target.DEFAULT) :
487  scalar = Scalar(Type.ENUM, policy3)
488  Node.__init__(self, "org.khronos.openvx.add", image_in1, image_in2, scalar, image_out4)
489  self.setParams(3, 1, Type.IMAGE, Type.IMAGE, Type.SCALAR, Type.IMAGE)
490  self.setTarget(target)
491  self.setKernelEnumName("VX_KERNEL_ADD");
492 
493  def checkParams(self, *param_type_args) :
494  Node.checkParams(self, *param_type_args)
495  # additional error conditions over the basic ones
496  assert ( self.ref[0].df_image == DfImage.U8 or self.ref[0].df_image == DfImage.S16 ), "Image data format must be either U8 or S16"
497  assert ( self.ref[1].df_image == DfImage.U8 or self.ref[1].df_image == DfImage.S16 ), "Image data format must be either U8 or S16"
498  assert ( self.ref[3].df_image == DfImage.U8 or self.ref[3].df_image == DfImage.S16 ), "Image data format must be either U8 or S16"
499  assert ( not((self.ref[0].df_image == DfImage.S16 or self.ref[1].df_image == DfImage.S16) and self.ref[3].df_image == DfImage.U8) ), "Output must be S16 if either input is S16"
500 
501 
508 
518  def __init__(self, image_in1, image_in2, policy, image_out3, name="default", target=Target.DEFAULT) :
519  scalar = Scalar(Type.ENUM, policy)
520  Node.__init__(self, "org.khronos.openvx.subtract", image_in1, image_in2, scalar, image_out3)
521  self.setParams(3, 1, Type.IMAGE, Type.IMAGE, Type.SCALAR, Type.IMAGE)
522  self.setTarget(target)
523  self.setKernelEnumName("VX_KERNEL_SUBTRACT");
524 
525  def checkParams(self, *param_type_args) :
526  Node.checkParams(self, *param_type_args)
527  # additional error conditions over the basic ones
528  assert ( self.ref[0].df_image == DfImage.U8 or self.ref[0].df_image == DfImage.S16 ), "Image data format must be either U8 or S16"
529  assert ( self.ref[1].df_image == DfImage.U8 or self.ref[1].df_image == DfImage.S16 ), "Image data format must be either U8 or S16"
530  assert ( self.ref[3].df_image == DfImage.U8 or self.ref[3].df_image == DfImage.S16 ), "Image data format must be either U8 or S16"
531  assert ( not((self.ref[0].df_image == DfImage.S16 or self.ref[1].df_image == DfImage.S16) and self.ref[3].df_image == DfImage.U8) ), "Output must be S16 if either input is S16"
532 
533 
539 class NodeAnd (Node) :
540 
549  def __init__(self, image_in1, image_in2, image_out3, name="default", target=Target.DEFAULT) :
550  Node.__init__(self, "org.khronos.openvx.and", image_in1, image_in2, image_out3)
551  self.setParams(2, 1, Type.IMAGE, Type.IMAGE, Type.IMAGE)
552  self.setTarget(target)
553  self.setKernelEnumName("VX_KERNEL_AND");
554 
555  def checkParams(self, *param_type_args) :
556  Node.checkParams(self, *param_type_args)
557  # additional error conditions over the basic ones
558  assert ( self.ref[0].df_image == self.ref[1].df_image ), "Inputs MUST have same image data format"
559  assert ( self.ref[1].df_image == self.ref[2].df_image ), "Inputs and Output MUST have same image data format"
560  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
561 
562 
568 class NodeXor (Node) :
569 
578  def __init__(self, image_in1, image_in2, image_out3, name="default", target=Target.DEFAULT) :
579  Node.__init__(self, "org.khronos.openvx.xor", image_in1, image_in2, image_out3)
580  self.setParams(2, 1, Type.IMAGE, Type.IMAGE, Type.IMAGE)
581  self.setTarget(target)
582  self.setKernelEnumName("VX_KERNEL_XOR");
583 
584  def checkParams(self, *param_type_args) :
585  Node.checkParams(self, *param_type_args)
586  # additional error conditions over the basic ones
587  assert ( self.ref[0].df_image == self.ref[1].df_image ), "Inputs MUST have same image data format"
588  assert ( self.ref[1].df_image == self.ref[2].df_image ), "Inputs and Output MUST have same image data format"
589  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
590 
591 
597 class NodeOr (Node) :
598 
607  def __init__(self, image_in1, image_in2, image_out3, name="default", target=Target.DEFAULT) :
608  Node.__init__(self, "org.khronos.openvx.or", image_in1, image_in2, image_out3)
609  self.setParams(2, 1, Type.IMAGE, Type.IMAGE, Type.IMAGE)
610  self.setTarget(target)
611  self.setKernelEnumName("VX_KERNEL_OR");
612 
613  def checkParams(self, *param_type_args) :
614  Node.checkParams(self, *param_type_args)
615  # additional error conditions over the basic ones
616  assert ( self.ref[0].df_image == self.ref[1].df_image ), "Inputs MUST have same image data format"
617  assert ( self.ref[1].df_image == self.ref[2].df_image ), "Inputs and Output MUST have same image data format"
618  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
619 
620 
626 class NodeNot (Node) :
627 
635  def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT) :
636  Node.__init__(self, "org.khronos.openvx.not", image_in1, image_out2)
637  self.setParams(1, 1, Type.IMAGE, Type.IMAGE)
638  self.setTarget(target)
639  self.setKernelEnumName("VX_KERNEL_NOT");
640 
641  def checkParams(self, *param_type_args) :
642  Node.checkParams(self, *param_type_args)
643  # additional error conditions over the basic ones
644  assert ( self.ref[0].df_image == self.ref[1].df_image ), "Inputs and Output MUST have same image data format"
645  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
646 
647 
653 class NodeBox3x3 (Node) :
654 
662  def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT) :
663  Node.__init__(self, "org.khronos.openvx.box_3x3", image_in1, image_out2)
664  self.setParams(1, 1, Type.IMAGE, Type.IMAGE)
665  self.setTarget(target)
666  self.setKernelEnumName("VX_KERNEL_BOX_3x3");
667 
668  def checkParams(self, *param_type_args) :
669  Node.checkParams(self, *param_type_args)
670  # additional error conditions over the basic ones
671  assert ( self.ref[0].df_image == self.ref[1].df_image ), "Inputs and Output MUST have same image data format"
672  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
673 
674 
681 
692  def __init__(self, image_in1, hyst_in2, grad_size_in3, norm_type_in4, image_out5, name="default", target=Target.DEFAULT) :
693  scalar3 = Scalar(Type.INT32, grad_size_in3)
694  scalar4 = Scalar(Type.ENUM, norm_type_in4)
695  Node.__init__(self, "org.khronos.openvx.canny_edge_detector", image_in1, hyst_in2, scalar3, scalar4, image_out5)
696  self.setParams(4, 1, Type.IMAGE, Type.THRESHOLD, Type.SCALAR, Type.SCALAR, Type.IMAGE)
697  self.setTarget(target)
698  self.setKernelEnumName("VX_KERNEL_CANNY_EDGE_DETECTOR");
699 
700  def checkParams(self, *param_type_args) :
701  Node.checkParams(self, *param_type_args)
702  # additional error conditions over the basic ones
703  assert ( self.ref[0].df_image == self.ref[4].df_image ), "Input and Output MUST have same image data format"
704  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
705 
706 
713 
724  def __init__(self, image_in1, image_in2, image_in3, image_in4, image_out5, name="default", target=Target.DEFAULT) :
725  Node.__init__(self, "org.khronos.openvx.channel_combine", image_in1, image_in2, image_in3, image_in4, image_out5)
726  # modify based on null type?
727  if image_in4.type == Type.NULL :
728  if image_in3.type == Type.NULL :
729  self.setParams(4, 1, Type.IMAGE, Type.IMAGE, Type.NULL, Type.NULL, Type.IMAGE)
730  else :
731  self.setParams(4, 1, Type.IMAGE, Type.IMAGE, Type.IMAGE, Type.NULL, Type.IMAGE)
732  else :
733  self.setParams(4, 1, Type.IMAGE, Type.IMAGE, Type.IMAGE, Type.IMAGE, Type.IMAGE)
734  self.setTarget(target)
735  self.setKernelEnumName("VX_KERNEL_CHANNEL_COMBINE");
736 
737  def checkParams(self, *param_type_args) :
738  Node.checkParams(self, *param_type_args)
739  # additional error conditions over the basic ones
740  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
741  assert ( self.ref[1].df_image == DfImage.U8 ), "Image data format must be U8"
742  if param_type_args[2] == Type.IMAGE :
743  assert ( self.ref[2].df_image == DfImage.U8 ), "Image data format must be U8"
744  if param_type_args[3] == Type.IMAGE :
745  assert ( self.ref[3].df_image == DfImage.U8 ), "Image data format must be U8"
746  assert ( self.ref[4].df_image != DfImage.U8 ), "Image data format must not be U8"
747 
748 
755 
764  def __init__(self, image_in1, channel2, image_out3, name="default", target=Target.DEFAULT) :
765  scalar = Scalar(Type.ENUM, channel2)
766  Node.__init__(self, "org.khronos.openvx.channel_extract", image_in1, scalar, image_out3)
767  self.setParams(2, 1, Type.IMAGE, Type.SCALAR, Type.IMAGE)
768  self.setTarget(target)
769  self.setKernelEnumName("VX_KERNEL_CHANNEL_EXTRACT");
770 
771  def checkParams(self, *param_type_args) :
772  Node.checkParams(self, *param_type_args)
773  # additional error conditions over the basic ones
774  assert ( self.ref[2].df_image == DfImage.U8 ), "Output format must be U8"
775 
776 
783 
791  def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT) :
792  Node.__init__(self, "org.khronos.openvx.color_convert", image_in1, image_out2)
793  self.setParams(1, 1, Type.IMAGE, Type.IMAGE)
794  self.setTarget(target)
795  self.setKernelEnumName("VX_KERNEL_COLOR_CONVERT");
796 
797  def checkParams(self, *param_type_args) :
798  Node.checkParams(self, *param_type_args)
799  # additional error conditions over the basic ones
800 
801 #TODO Order of params
802 
809 
819  def __init__(self, image_in1, image_out2, policy3, shift4, name="default", target=Target.DEFAULT) :
820  scalar3 = Scalar(Type.ENUM, policy3)
821  Node.__init__(self, "org.khronos.openvx.convertdepth", image_in1, image_out2, scalar3, shift4)
822  self.setParams(3, 1, Type.IMAGE, Type.IMAGE, Type.SCALAR, Type.SCALAR)
823  self.param_dir[0] = Direction.INPUT;
824  self.param_dir[1] = Direction.OUTPUT;
825  self.param_dir[2] = Direction.INPUT;
826  self.param_dir[3] = Direction.INPUT;
827  self.setTarget(target)
828  self.setKernelEnumName("VX_KERNEL_CONVERTDEPTH");
829 
830  def checkParams(self, *param_type_args) :
831  Node.checkParams(self, *param_type_args)
832  # additional error conditions over the basic ones
833 
834 
841 
850  def __init__(self, image_in1, conv2, image_out3, name="default", target=Target.DEFAULT) :
851  Node.__init__(self, "org.khronos.openvx.custom_convolution", image_in1, conv2, image_out3)
852  self.setParams(2, 1, Type.IMAGE, Type.CONVOLUTION, Type.IMAGE)
853  self.setTarget(target)
854  self.setKernelEnumName("VX_KERNEL_CUSTOM_CONVOLUTION");
855 
856  def checkParams(self, *param_type_args) :
857  Node.checkParams(self, *param_type_args)
858  # additional error conditions over the basic ones
859  assert ( self.ref[0].df_image == DfImage.U8 ), "Input format must be U8"
860  assert ( self.ref[2].df_image == DfImage.U8 or self.ref[2].df_image == DfImage.S16 ), "Output format must be either U8 or S16"
861 
862 
869 
877  def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT) :
878  Node.__init__(self, "org.khronos.openvx.dilate_3x3", image_in1, image_out2)
879  self.setParams(1, 1, Type.IMAGE, Type.IMAGE)
880  self.setTarget(target)
881  self.setKernelEnumName("VX_KERNEL_DILATE_3x3");
882 
883  def checkParams(self, *param_type_args) :
884  Node.checkParams(self, *param_type_args)
885  # additional error conditions over the basic ones
886  assert ( self.ref[0].df_image == self.ref[1].df_image ), "Input and Output MUST have same image data format"
887  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
888 
889 
896 
904  def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT) :
905  Node.__init__(self, "org.khronos.openvx.equalize_histogram", image_in1, image_out2)
906  self.setParams(1, 1, Type.IMAGE, Type.IMAGE)
907  self.setTarget(target)
908  self.setKernelEnumName("VX_KERNEL_EQUALIZE_HISTOGRAM");
909 
910  def checkParams(self, *param_type_args) :
911  Node.checkParams(self, *param_type_args)
912  # additional error conditions over the basic ones
913  assert ( self.ref[0].df_image == self.ref[1].df_image ), "Input and Output MUST have same image data format"
914  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
915 
916 
923 
931  def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT) :
932  Node.__init__(self, "org.khronos.openvx.erode_3x3", image_in1, image_out2)
933  self.setParams(1, 1, Type.IMAGE, Type.IMAGE)
934  self.setTarget(target)
935  self.setKernelEnumName("VX_KERNEL_ERODE_3x3");
936 
937  def checkParams(self, *param_type_args) :
938  Node.checkParams(self, *param_type_args)
939  # additional error conditions over the basic ones
940  assert ( self.ref[0].df_image == self.ref[1].df_image ), "Input and Output MUST have same image data format"
941  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
942 
943 
950 
961  def __init__(self, image_in1, strength_thresh2, nonmax3, arr_out4, corners5, name="default", target=Target.DEFAULT) :
962  Node.__init__(self, "org.khronos.openvx.fast_corners", image_in1, strength_thresh2, nonmax3, arr_out4, corners5)
963  if corners5.type == Type.NULL :
964  self.setParams(3, 2, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.ARRAY, Type.NULL)
965  else :
966  self.setParams(3, 2, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.ARRAY, Type.SCALAR)
967  self.setTarget(target)
968  self.setKernelEnumName("VX_KERNEL_FAST_CORNERS");
969 
970  def checkParams(self, *param_type_args) :
971  Node.checkParams(self, *param_type_args)
972  # additional error conditions over the basic ones
973  assert ( self.ref[0].df_image == DfImage.U8 ), "Input image data format must be U8"
974  assert ( self.ref[1].data_type == Type.FLOAT32 ), "Strength scalar format must be F32"
975 
976 
983 
991  def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT) :
992  Node.__init__(self, "org.khronos.openvx.gaussian_3x3", image_in1, image_out2)
993  self.setParams(1, 1, Type.IMAGE, Type.IMAGE)
994  self.setTarget(target)
995  self.setKernelEnumName("VX_KERNEL_GAUSSIAN_3x3");
996 
997  def checkParams(self, *param_type_args) :
998  Node.checkParams(self, *param_type_args)
999  # additional error conditions over the basic ones
1000  assert ( self.ref[0].df_image == self.ref[1].df_image ), "Input and Output MUST have same image data format"
1001  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
1002 
1003 
1010 
1020  def __init__(self, function1, image_in2, matrix_in3, image_out4, name="default", target=Target.DEFAULT) :
1021  scalar1 = Scalar(Type.ENUM, function1)
1022  Node.__init__(self, "org.khronos.openvx.non_linear_filter", scalar1, image_in2, matrix_in3, image_out4)
1023  self.setParams(3, 1, Type.SCALAR, Type.IMAGE, Type.MATRIX, Type.IMAGE)
1024  self.setTarget(target)
1025  self.setKernelEnumName("VX_KERNEL_NON_LINEAR_FILTER");
1026 
1027  def checkParams(self, *param_type_args) :
1028  Node.checkParams(self, *param_type_args)
1029  # additional error conditions over the basic ones
1030  assert ( self.ref[1].df_image == DfImage.U8 ), "Image data format must be U8"
1031  assert ( self.ref[3].df_image == DfImage.U8 ), "Image data format must be U8"
1032 
1033 
1040 
1054  def __init__(self, image_in1, strength_thresh2, dist3, sensitivity4, gradient_size5, block_size6, arr_out7, num_corners8, name="default", target=Target.DEFAULT) :
1055  scalar5 = Scalar(Type.INT32, gradient_size5)
1056  scalar6 = Scalar(Type.INT32, block_size6)
1057  Node.__init__(self, "org.khronos.openvx.harris_corners", image_in1, strength_thresh2, dist3, sensitivity4, scalar5, scalar6, arr_out7, num_corners8)
1058  if num_corners8.type == Type.NULL :
1059  self.setParams(6, 2, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.SCALAR, Type.SCALAR, Type.SCALAR, Type.ARRAY, Type.NULL)
1060  else :
1061  self.setParams(6, 2, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.SCALAR, Type.SCALAR, Type.SCALAR, Type.ARRAY, Type.SCALAR)
1062  self.setTarget(target)
1063  self.setKernelEnumName("VX_KERNEL_HARRIS_CORNERS");
1064 
1065  def checkParams(self, *param_type_args) :
1066  Node.checkParams(self, *param_type_args)
1067  # additional error conditions over the basic ones
1068  assert ( self.ref[0].df_image == DfImage.U8 ), "Input image data format must be U8"
1069  assert ( self.ref[1].data_type == Type.FLOAT32 ), "Strength scalar format must be F32"
1070  assert ( self.ref[2].data_type == Type.FLOAT32 ), "Distance scalar format must be F32"
1071  assert ( self.ref[3].data_type == Type.FLOAT32 ), "Sensitivity scalar format must be F32"
1072 
1073 
1080 
1088  def __init__(self, image_in1, dist2, name="default", target=Target.DEFAULT) :
1089  Node.__init__(self, "org.khronos.openvx.histogram", image_in1, dist2)
1090  self.setParams(1, 1, Type.IMAGE, Type.DISTRIBUTION)
1091  self.setTarget(target)
1092  self.setKernelEnumName("VX_KERNEL_HISTOGRAM");
1093 
1094  def checkParams(self, *param_type_args) :
1095  Node.checkParams(self, *param_type_args)
1096  # additional error conditions over the basic ones
1097  assert ( self.ref[0].df_image == DfImage.U8 ), "Input image data format must be U8"
1098 
1099 
1106 
1114  def __init__(self, image_in1, pyr_out2, name="default", target=Target.DEFAULT) :
1115  Node.__init__(self, "org.khronos.openvx.gaussian_pyramid", image_in1, pyr_out2)
1116  self.setParams(1, 1, Type.IMAGE, Type.PYRAMID)
1117  self.setTarget(target)
1118  self.setKernelEnumName("VX_KERNEL_GAUSSIAN_PYRAMID");
1119 
1120  def checkParams(self, *param_type_args) :
1121  Node.checkParams(self, *param_type_args)
1122  # additional error conditions over the basic ones
1123  assert ( self.ref[0].df_image == self.ref[1].format ), "Input and Output MUST have same image data format"
1124  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
1125 
1126 
1133 
1142  def __init__(self, image_in1, pyr_out2, image_out3, name="default", target=Target.DEFAULT) :
1143  Node.__init__(self, "org.khronos.openvx.laplacian_pyramid", image_in1, pyr_out2, image_out3)
1144  self.setParams(1, 2, Type.IMAGE, Type.PYRAMID, Type.IMAGE)
1145  self.setTarget(target)
1146  self.setKernelEnumName("VX_KERNEL_LAPLACIAN_PYRAMID");
1147 
1148  def checkParams(self, *param_type_args) :
1149  Node.checkParams(self, *param_type_args)
1150  # additional error conditions over the basic ones
1151  assert ( self.ref[0].df_image == DfImage.U8 ), "Input image data format must be U8"
1152  assert ( self.ref[1].format == DfImage.S16 ), "Output pyramid image data format must be S16"
1153  assert ( self.ref[2].df_image == DfImage.S16 or self.ref[2].df_image == DfImage.U8 ), "Output image data format must be either U8 or S16"
1154 
1155 
1162 
1171  def __init__(self, pyr_in1, image_in2, image_out3, name="default", target=Target.DEFAULT) :
1172  Node.__init__(self, "org.khronos.openvx.laplacian_reconstruct", pyr_in1, image_in2, image_out3)
1173  self.setParams(2, 1, Type.PYRAMID, Type.IMAGE, Type.IMAGE)
1174  self.setTarget(target)
1175  self.setKernelEnumName("VX_KERNEL_LAPLACIAN_RECONSTRUCT");
1176 
1177  def checkParams(self, *param_type_args) :
1178  Node.checkParams(self, *param_type_args)
1179  # additional error conditions over the basic ones
1180  assert ( self.ref[0].format == DfImage.S16 ), "Input pyramid image data format must be S16"
1181  assert ( self.ref[1].df_image == DfImage.S16 or self.ref[1].df_image == DfImage.U8), "Input image data format must be either U8 or S16"
1182  assert ( self.ref[2].df_image == DfImage.U8 ), "Output image data format must be U8"
1183 
1184 
1191 
1199  def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT) :
1200  Node.__init__(self, "org.khronos.openvx.integral_image", image_in1, image_out2)
1201  self.setParams(1, 1, Type.IMAGE, Type.IMAGE)
1202  self.setTarget(target)
1203  self.setKernelEnumName("VX_KERNEL_INTEGRAL_IMAGE");
1204 
1205  def checkParams(self, *param_type_args) :
1206  Node.checkParams(self, *param_type_args)
1207  # additional error conditions over the basic ones
1208  assert ( self.ref[0].df_image == DfImage.U8 ), "Input image data format must be U8"
1209  assert ( self.ref[1].df_image == DfImage.U32 ), "Output image data format must be U32"
1210 
1211 
1218 
1227  def __init__(self, image_in1, image_in2, image_out3, name="default", target=Target.DEFAULT) :
1228  Node.__init__(self, "org.khronos.openvx.magnitude", image_in1, image_in2, image_out3)
1229  self.setParams(2, 1, Type.IMAGE, Type.IMAGE, Type.IMAGE)
1230  self.setTarget(target)
1231  self.setKernelEnumName("VX_KERNEL_MAGNITUDE");
1232 
1233  def checkParams(self, *param_type_args) :
1234  Node.checkParams(self, *param_type_args)
1235  # additional error conditions over the basic ones
1236  assert ( self.ref[0].df_image == self.ref[1].df_image ), "Inputs MUST have same image data format"
1237  assert ( self.ref[1].df_image == self.ref[2].df_image ), "Inputs and Output MUST have same image data format"
1238  assert ( self.ref[0].df_image == DfImage.S16 ), "Image data format must be S16"
1239 
1240 
1247 
1256  def __init__(self, image_in1, mean2, stddev3, name="default", target=Target.DEFAULT) :
1257  Node.__init__(self, "org.khronos.openvx.mean_stddev", image_in1, mean2, stddev3)
1258  self.setParams(1, 2, Type.IMAGE, Type.SCALAR, Type.SCALAR)
1259  self.setTarget(target)
1260  self.setKernelEnumName("VX_KERNEL_MEAN_STDDEV");
1261 
1262  def checkParams(self, *param_type_args) :
1263  Node.checkParams(self, *param_type_args)
1264  # additional error conditions over the basic ones
1265  assert ( self.ref[0].df_image == DfImage.U8 ), "Input image data format must be U8"
1266  assert ( self.ref[1].data_type == Type.FLOAT32 ), "Mean scalar format must be F32"
1267  assert ( self.ref[2].data_type == Type.FLOAT32 ), "Standard Deviation scalar format must be F32"
1268 
1269 
1276 
1284  def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT) :
1285  Node.__init__(self, "org.khronos.openvx.median_3x3", image_in1, image_out2)
1286  self.setParams(1, 1, Type.IMAGE, Type.IMAGE)
1287  self.setTarget(target)
1288  self.setKernelEnumName("VX_KERNEL_MEDIAN_3x3");
1289 
1290  def checkParams(self, *param_type_args) :
1291  Node.checkParams(self, *param_type_args)
1292  # additional error conditions over the basic ones
1293  assert ( self.ref[0].df_image == self.ref[1].df_image ), "Input and Output MUST have same image data format"
1294  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
1295 
1296 
1303 
1316  def __init__(self, image_in1, min2, max3, array_out4, array_out5, minCnt6, maxCnt7, name="default", target=Target.DEFAULT) :
1317  Node.__init__(self, "org.khronos.openvx.minmaxloc", image_in1, min2, max3, array_out4, array_out5, minCnt6, maxCnt7)
1318 
1319  # 0000
1320  if array_out4.type == Type.NULL and array_out5.type == Type.NULL and \
1321  minCnt6.type == Type.NULL and maxCnt7.type == Type.NULL :
1322  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.NULL, Type.NULL, Type.NULL, Type.NULL)
1323  #0001
1324  elif array_out4.type == Type.ARRAY and array_out5.type == Type.NULL and \
1325  minCnt6.type == Type.NULL and maxCnt7.type == Type.NULL :
1326  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.ARRAY, Type.NULL, Type.NULL, Type.NULL)
1327  #0010
1328  elif array_out4.type == Type.NULL and array_out5.type == Type.ARRAY and \
1329  minCnt6.type == Type.NULL and maxCnt7.type == Type.NULL :
1330  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.NULL, Type.ARRAY, Type.NULL, Type.NULL)
1331  #0011
1332  elif array_out4.type == Type.ARRAY and array_out5.type == Type.ARRAY and \
1333  minCnt6.type == Type.NULL and maxCnt7.type == Type.NULL :
1334  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.ARRAY, Type.ARRAY, Type.NULL, Type.NULL)
1335  #0100
1336  elif array_out4.type == Type.NULL and array_out5.type == Type.NULL and \
1337  minCnt6.type == Type.SCALAR and maxCnt7.type == Type.NULL :
1338  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.NULL, Type.NULL, Type.SCALAR, Type.NULL)
1339  #0101
1340  elif array_out4.type == Type.ARRAY and array_out5.type == Type.NULL and \
1341  minCnt6.type == Type.SCALAR and maxCnt7.type == Type.NULL :
1342  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.ARRAY, Type.NULL, Type.NULL, Type.SCALAR, Type.NULL)
1343  #0110
1344  elif array_out4.type == Type.NULL and array_out5.type == Type.ARRAY and \
1345  minCnt6.type == Type.SCALAR and maxCnt7.type == Type.NULL :
1346  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.NULL, Type.ARRAY, Type.NULL, Type.SCALAR, Type.NULL)
1347  #0111
1348  elif array_out4.type == Type.ARRAY and array_out5.type == Type.ARRAY and \
1349  minCnt6.type == Type.SCALAR and maxCnt7.type == Type.NULL :
1350  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.ARRAY, Type.ARRAY, Type.NULL, Type.SCALAR, Type.NULL)
1351  #1000
1352  elif array_out4.type == Type.NULL and array_out5.type == Type.NULL and \
1353  minCnt6.type == Type.NULL and maxCnt7.type == Type.SCALAR :
1354  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.NULL, Type.NULL, Type.NULL, Type.SCALAR)
1355  #1001
1356  elif array_out4.type == Type.ARRAY and array_out5.type == Type.NULL and \
1357  minCnt6.type == Type.NULL and maxCnt7.type == Type.SCALAR :
1358  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.ARRAY, Type.NULL, Type.NULL, Type.SCALAR)
1359  #1010
1360  elif array_out4.type == Type.NULL and array_out5.type == Type.ARRAY and \
1361  minCnt6.type == Type.NULL and maxCnt7.type == Type.SCALAR :
1362  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.NULL, Type.ARRAY, Type.NULL, Type.SCALAR)
1363  #1011
1364  elif array_out4.type == Type.ARRAY and array_out5.type == Type.ARRAY and \
1365  minCnt6.type == Type.NULL and maxCnt7.type == Type.SCALAR :
1366  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.ARRAY, Type.ARRAY, Type.NULL, Type.SCALAR)
1367  #1100
1368  elif array_out4.type == Type.NULL and array_out5.type == Type.NULL and \
1369  minCnt6.type == Type.SCALAR and maxCnt7.type == Type.SCALAR :
1370  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.NULL, Type.NULL, Type.SCALAR, Type.SCALAR)
1371  #1101
1372  elif array_out4.type == Type.ARRAY and array_out5.type == Type.NULL and \
1373  minCnt6.type == Type.SCALAR and maxCnt7.type == Type.SCALAR :
1374  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.ARRAY, Type.NULL, Type.SCALAR, Type.SCALAR)
1375  #1110
1376  elif array_out4.type == Type.NULL and array_out5.type == Type.ARRAY and \
1377  minCnt6.type == Type.SCALAR and maxCnt7.type == Type.SCALAR :
1378  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.NULL, Type.ARRAY, Type.SCALAR, Type.SCALAR)
1379  #1111
1380  else :
1381  self.setParams(1, 6, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.ARRAY, Type.ARRAY, Type.SCALAR, Type.SCALAR)
1382  self.setTarget(target)
1383  self.setKernelEnumName("VX_KERNEL_MINMAXLOC");
1384 
1385  def checkParams(self, *param_type_args) :
1386  Node.checkParams(self, *param_type_args)
1387  # additional error conditions over the basic ones
1388  assert ( self.ref[0].df_image == DfImage.U8 or self.ref[0].df_image == DfImage.S16 ), "Image data format must be either U8 or S16"
1389 
1390 #TODO Order of parameters
1391 
1398 
1414  def __init__(self, pyr_in1, pyr_in2, array_in3, array_in4, array_out5, termination6, epsilon7, num_iters8, use_initial_estimate9, window_dim10, name="default", target=Target.DEFAULT) :
1415  scalar6 = Scalar(Type.ENUM, termination6)
1416  epsilon7 = Scalar(Type.FLOAT32, epsilon7)
1417  num_iters8 = Scalar(Type.UINT32, num_iters8)
1418  use_initial_estimate9 = Scalar(Type.BOOL, use_initial_estimate9)
1419  scalar10 = Scalar(Type.SIZE, window_dim10)
1420  Node.__init__(self, "org.khronos.openvx.optical_flow_pyr_lk", pyr_in1, pyr_in2, array_in3, array_in4, array_out5, scalar6, epsilon7, num_iters8, use_initial_estimate9, scalar10)
1421  self.setParams(9, 1, Type.PYRAMID, Type.PYRAMID, Type.ARRAY, Type.ARRAY, Type.ARRAY, Type.SCALAR, Type.SCALAR, Type.SCALAR, Type.SCALAR, Type.SCALAR)
1422  self.setTarget(target)
1423  self.setKernelEnumName("VX_KERNEL_OPTICAL_FLOW_PYR_LK");
1424 
1425  def checkParams(self, *param_type_args) :
1426  Node.checkParams(self, *param_type_args)
1427  # additional error conditions over the basic ones
1428  assert ( self.ref[0].format == DfImage.U8 ), "Input pyramid image data format must be U8"
1429  assert ( self.ref[1].format == DfImage.U8 ), "Input pyramid image data format must be U8"
1430  assert ( self.ref[6].data_type == Type.FLOAT32 ), "Epsilon scalar format must be F32"
1431 
1432 
1438 class NodePhase (Node) :
1439 
1448  def __init__(self, image_in1, image_in2, image_out3, name="default", target=Target.DEFAULT) :
1449  Node.__init__(self, "org.khronos.openvx.phase", image_in1, image_in2, image_out3)
1450  self.setParams(2, 1, Type.IMAGE, Type.IMAGE, Type.IMAGE)
1451  self.setTarget(target)
1452  self.setKernelEnumName("VX_KERNEL_PHASE");
1453 
1454  def checkParams(self, *param_type_args) :
1455  Node.checkParams(self, *param_type_args)
1456  # additional error conditions over the basic ones
1457  assert ( self.ref[0].df_image == self.ref[1].df_image ), "Inputs MUST have same image data format"
1458  assert ( self.ref[0].df_image == DfImage.S16 ), "Input image data format must be S16"
1459  assert ( self.ref[2].df_image == DfImage.U8 ), "Output image data format must be U8"
1460 
1461 
1468 
1480  def __init__(self, image_in1, image_in2, scale3, overflow4, rounding5, image_out6, name="default", target=Target.DEFAULT) :
1481  scalar4 = Scalar(Type.ENUM, overflow4)
1482  scalar5 = Scalar(Type.ENUM, rounding5)
1483  Node.__init__(self, "org.khronos.openvx.multiply", image_in1, image_in2, scale3, scalar4, scalar5, image_out6)
1484  self.setParams(5, 1, Type.IMAGE, Type.IMAGE, Type.SCALAR, Type.SCALAR, Type.SCALAR, Type.IMAGE)
1485  self.setTarget(target)
1486  self.setKernelEnumName("VX_KERNEL_MULTIPLY");
1487 
1488  def checkParams(self, *param_type_args) :
1489  Node.checkParams(self, *param_type_args)
1490  # additional error conditions over the basic ones
1491  assert ( self.ref[0].df_image == DfImage.U8 or self.ref[0].df_image == DfImage.S16 ), "Image data format must be either U8 or S16"
1492  assert ( self.ref[1].df_image == DfImage.U8 or self.ref[1].df_image == DfImage.S16 ), "Image data format must be either U8 or S16"
1493  assert ( self.ref[5].df_image == DfImage.U8 or self.ref[5].df_image == DfImage.S16 ), "Image data format must be either U8 or S16"
1494  assert ( not((self.ref[0].df_image == DfImage.S16 or self.ref[1].df_image == DfImage.S16) and self.ref[5].df_image == DfImage.U8) ), "Output must be S16 if either input is S16"
1495 
1496 
1502 class NodeRemap (Node) :
1503 
1513  def __init__(self, image_in1, table_in2, policy3, image_out4, name="default", target=Target.DEFAULT) :
1514  scalar3 = Scalar(Type.ENUM, policy3)
1515  Node.__init__(self, "org.khronos.openvx.remap", image_in1, table_in2, scalar3, image_out4)
1516  self.setParams(3, 1, Type.IMAGE, Type.REMAP, Type.SCALAR, Type.IMAGE)
1517  self.setTarget(target)
1518  self.setKernelEnumName("VX_KERNEL_REMAP");
1519 
1520  def checkParams(self, *param_type_args) :
1521  Node.checkParams(self, *param_type_args)
1522  # additional error conditions over the basic ones
1523  assert ( self.ref[0].df_image == self.ref[3].df_image ), "Input and Output MUST have same image data format"
1524  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
1525 
1526 #TODO Order of params
1527 
1534 
1543  def __init__(self, image_in1, image_out2, interp3, name="default", target=Target.DEFAULT) :
1544  scalar = Scalar(Type.ENUM, interp3)
1545  Node.__init__(self, "org.khronos.openvx.scale_image", image_in1, image_out2, scalar)
1546  self.setParams(2, 1, Type.IMAGE, Type.IMAGE, Type.SCALAR)
1547  self.setTarget(target)
1548  self.setKernelEnumName("VX_KERNEL_SCALE_IMAGE");
1549 
1550  def checkParams(self, *param_type_args) :
1551  Node.checkParams(self, *param_type_args)
1552  # additional error conditions over the basic ones
1553  assert ( self.ref[0].df_image == self.ref[1].df_image ), "Input and Output MUST have same image data format"
1554  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
1555 
1556 #TODO Order of params
1557 
1564 
1573  def __init__(self, image_in1, image_out2, kernel_size, name="default", target=Target.DEFAULT) :
1574  scalar = Scalar(Type.ENUM, kernel_size)
1575  Node.__init__(self, "org.khronos.openvx.halfscale_gaussian", image_in1, scalar, image_out2)
1576  self.setParams(2, 1, Type.IMAGE, Type.SCALAR, Type.IMAGE)
1577  self.setTarget(target)
1578  self.setKernelEnumName("VX_KERNEL_HALFSCALE_GAUSSIAN");
1579 
1580  def checkParams(self, *param_type_args) :
1581  Node.checkParams(self, *param_type_args)
1582  # additional error conditions over the basic ones
1583  assert ( self.ref[0].df_image == self.ref[2].df_image ), "Input and Output MUST have same image data format"
1584  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
1585 
1586 
1593 
1602  def __init__(self, image_in1, image_out2, image_out3, name="default", target=Target.DEFAULT) :
1603  Node.__init__(self, "org.khronos.openvx.sobel_3x3", image_in1, image_out2, image_out3)
1604  self.setParams(1, 2, Type.IMAGE, Type.IMAGE, Type.IMAGE)
1605  self.setTarget(target)
1606  self.setKernelEnumName("VX_KERNEL_SOBEL_3x3");
1607 
1608  def checkParams(self, *param_type_args) :
1609  Node.checkParams(self, *param_type_args)
1610  # additional error conditions over the basic ones
1611  assert ( self.ref[0].df_image == DfImage.U8 ), "Input image data format must be U8"
1612  assert ( self.ref[1].df_image == self.ref[2].df_image ), "Output images MUST have same image data format"
1613  assert ( self.ref[1].df_image == DfImage.S16 ), "Output image data format must be S16"
1614 
1615 
1622 
1631  def __init__(self, image_in1, lut_in2, image_out3, name="default", target=Target.DEFAULT) :
1632  Node.__init__(self, "org.khronos.openvx.table_lookup", image_in1, lut_in2, image_out3)
1633  self.setParams(2, 1, Type.IMAGE, Type.LUT, Type.IMAGE)
1634  self.setTarget(target)
1635  self.setKernelEnumName("VX_KERNEL_TABLE_LOOKUP");
1636 
1637  def checkParams(self, *param_type_args) :
1638  Node.checkParams(self, *param_type_args)
1639  # additional error conditions over the basic ones
1640  assert ( self.ref[0].df_image == self.ref[2].df_image ), "Input and Output MUST have same image data format"
1641  assert ( self.ref[0].df_image == DfImage.U8 or self.ref[0].df_image == DfImage.S16 ), "Image data format must be either U8 or S16"
1642 
1643 
1650 
1659  def __init__(self, image_in1, thresh_in2, image_out3, name="default", target=Target.DEFAULT) :
1660  Node.__init__(self, "org.khronos.openvx.threshold", image_in1, thresh_in2, image_out3)
1661  self.setParams(2, 1, Type.IMAGE, Type.THRESHOLD, Type.IMAGE)
1662  self.setTarget(target)
1663  self.setKernelEnumName("VX_KERNEL_THRESHOLD");
1664 
1665  def checkParams(self, *param_type_args) :
1666  Node.checkParams(self, *param_type_args)
1667  # additional error conditions over the basic ones
1668  assert ( self.ref[0].df_image == DfImage.U8 ), "Input image data format must be U8"
1669 
1670 
1677 
1687  def __init__(self, image_in1, matrix_in2, interp3, image_out4, name="default", target=Target.DEFAULT) :
1688  scalar = Scalar(Type.ENUM, interp3)
1689  Node.__init__(self, "org.khronos.openvx.warp_affine", image_in1, matrix_in2, scalar, image_out4)
1690  self.setParams(3, 1, Type.IMAGE, Type.MATRIX, Type.SCALAR, Type.IMAGE)
1691  self.setTarget(target)
1692  self.setKernelEnumName("VX_KERNEL_WARP_AFFINE");
1693 
1694  def checkParams(self, *param_type_args) :
1695  Node.checkParams(self, *param_type_args)
1696  # additional error conditions over the basic ones
1697  assert ( self.ref[0].df_image == self.ref[3].df_image ), "Input and Output MUST have same image data format"
1698  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
1699  assert ( self.ref[1].data_type == Type.FLOAT32 ), "Matrix data format must be F32"
1700 
1701 
1708 
1718  def __init__(self, image_in1, matrix_in2, interp3, image_out4, name="default", target=Target.DEFAULT) :
1719  scalar = Scalar(Type.ENUM, interp3)
1720  Node.__init__(self, "org.khronos.openvx.warp_perspective", image_in1, matrix_in2, scalar, image_out4)
1721  self.setParams(3, 1, Type.IMAGE, Type.MATRIX, Type.SCALAR, Type.IMAGE)
1722  self.setTarget(target)
1723  self.setKernelEnumName("VX_KERNEL_WARP_PERSPECTIVE");
1724 
1725  def checkParams(self, *param_type_args) :
1726  Node.checkParams(self, *param_type_args)
1727  # additional error conditions over the basic ones
1728  assert ( self.ref[0].df_image == self.ref[3].df_image ), "Input and Output MUST have same image data format"
1729  assert ( self.ref[0].df_image == DfImage.U8 ), "Image data format must be U8"
1730  assert ( self.ref[1].data_type == Type.FLOAT32 ), "Matrix data format must be F32"
def __init__(self, image_in1, image_in2, image_out3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:607
def __init__(self, image_in1, image_in2, image_out3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1448
Node object used to generate an Integral Image node.
Definition: node.py:1190
Node object used to generate a Median3x3 node.
Definition: node.py:1275
def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:635
def __init__(self, image_in1, image_in2, image_out3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:376
def __init__(self, image_in1, alpha_in2, image_inout3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:457
def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1199
Node object used to generate a subtract node.
Definition: node.py:507
def __init__(self, image_in1, lut_in2, image_out3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1631
def __init__(self, image_in1, image_out2, interp3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1543
Node object used to generate a Laplacian Pyramid node.
Definition: node.py:1132
def __init__(self, image_in1, mean2, stddev3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1256
Node object used to generate a Mean Standard Deviation node.
Definition: node.py:1246
def __init__(self, image_in1, pyr_out2, image_out3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1142
def __init__(self, image_in1, conv2, image_out3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:850
def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:662
def checkParams(self, param_type_args)
Parameter checking function.
Definition: node.py:313
def setTarget(self, target)
Specify target on which to run this node.
Definition: node.py:339
Node object used to generate an accumulate weighted node.
Definition: node.py:449
Node object used to generate an Equalize Histogram node.
Definition: node.py:895
Node object used to generate a Gaussian3x3 node.
Definition: node.py:982
Node object used to generate a Nonlinear Filter node.
Definition: node.py:1009
def __init__(self, image_in1, channel2, image_out3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:764
def __init__(self, image_in1, strength_thresh2, dist3, sensitivity4, gradient_size5, block_size6, arr_out7, num_corners8, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1054
def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:991
def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:904
Node object used to generate an AND node.
Definition: node.py:539
def __init__(self, image_in1, image_in2, image_in3, image_in4, image_out5, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:724
def __init__(self, image_in1, image_out2, image_out3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1602
def __init__(self, image_in1, image_in2, image_out3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1227
def __init__(self, image_in1, image_in2, policy, image_out3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:518
def __init__(self, image_in1, image_in2, policy3, image_out4, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:486
Node object used to generate a Channel Extract node.
Definition: node.py:754
Node object used to generate a Harris Corners node.
Definition: node.py:1039
def __init__(self, image_in1, image_in2, image_out3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:549
def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1284
def __init__(self, image_in1, strength_thresh2, nonmax3, arr_out4, corners5, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:961
Node object used to generate a NOT node.
Definition: node.py:626
def __init__(self, function1, image_in2, matrix_in3, image_out4, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1020
Node object used to generate an accumulate square node.
Definition: node.py:422
Node object used to generate a Channel Combine node.
Definition: node.py:712
def __init__(self, image_in1, matrix_in2, interp3, image_out4, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1718
def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:791
Node object used to generate a Warp Affine node.
Definition: node.py:1676
Node object used to generate a Scale node.
Definition: node.py:1533
def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:877
Node object used to generate an accumulate node.
Definition: node.py:396
Node object used to generate a Sobel3x3 node.
Definition: node.py:1592
def __init__(self, image_in1, table_in2, policy3, image_out4, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1513
Node object used to generate an XOR node.
Definition: node.py:568
def __init__(self, image_in1, matrix_in2, interp3, image_out4, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1687
def __init__(self, image_in1, image_in2, image_out3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:578
def __init__(self, image_in1, image_inout2, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:403
def setKernelEnumName(self, kernel_enum_name)
Specify kernel enum name to use.
Definition: node.py:354
def __init__(self, image_in1, image_out2, policy3, shift4, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:819
Node object used to generate a Color Convert node.
Definition: node.py:782
Node object used to generate a Fast Corners node.
Definition: node.py:949
Node object used to generate an Erode3x3 node.
Definition: node.py:922
Node object used to generate a Convert Depth node.
Definition: node.py:808
Node object used to generate a Gaussian Pyramid node.
Definition: node.py:1105
Node object used to generate a Laplacian Reconstruct node.
Definition: node.py:1161
Node object used to generate a Threshold node.
Definition: node.py:1649
Node object used to generate an absdiff node.
Definition: node.py:366
Node object used to generate a Half Scale Gaussian node.
Definition: node.py:1563
Node object used to generate an OR node.
Definition: node.py:597
Node object used to generate a Table Lookup node.
Definition: node.py:1621
Scalar object (OpenVX equivalent = vx_scalar)
Definition: scalar.py:77
def __init__(self, image_in1, shift_in2, image_inout3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:430
Node object used to generate a Custom Convolution node.
Definition: node.py:840
def __init__(self, kernel, args)
Constructor for base class.
Definition: node.py:295
def __init__(self, image_in1, dist2, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1088
def __init__(self, image_in1, image_in2, scale3, overflow4, rounding5, image_out6, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1480
def setParams(self, num_in, num_out, param_type_args)
Specify number of input/output parameters and data object type for each.
Definition: node.py:327
def __init__(self, pyr_in1, pyr_in2, array_in3, array_in4, array_out5, termination6, epsilon7, num_iters8, use_initial_estimate9, window_dim10, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1414
def __init__(self, image_in1, thresh_in2, image_out3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1659
Node object used to generate an add node.
Definition: node.py:475
Node object used to generate a Remap node.
Definition: node.py:1502
Node object used to generate a Warp Perspective node.
Definition: node.py:1707
Node object used to generate a Phase node.
Definition: node.py:1438
def __init__(self, pyr_in1, image_in2, image_out3, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1171
Node object used to generate a Magnitude node.
Definition: node.py:1217
Node object used to generate an Optical Flow node.
Definition: node.py:1397
Node object used to generate a Histogram node.
Definition: node.py:1079
def __init__(self, image_in1, image_out2, kernel_size, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1573
def __init__(self, image_in1, hyst_in2, grad_size_in3, norm_type_in4, image_out5, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:692
Node object used to generate a Canny Edge Detector node.
Definition: node.py:680
Node object used to generate a Dilate3x3 node.
Definition: node.py:868
def __init__(self, image_in1, image_out2, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:931
Node object used to generate a Multiply node.
Definition: node.py:1467
def __init__(self, image_in1, min2, max3, array_out4, array_out5, minCnt6, maxCnt7, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1316
Node object used to generate a Box3x3 node.
Definition: node.py:653
Node object (OpenVX equivalent = vx_node)
Definition: node.py:290
Node object used to generate a Min Max Location node.
Definition: node.py:1302
def __init__(self, image_in1, pyr_out2, name="default", target=Target.DEFAULT)
Constructor used to create this object.
Definition: node.py:1114