Segmentation of measurement using an external python script.

On a Windows machine, you need to install Python version 3 or higher and the py Python launcher

First, select Segmentation as node type and then select Python script as the method. Select the python script file using the Browse button or type the path to the script file directly.


Python file

Select python file.

Min area

The minimum number of pixels for an object to be included.

Max area

The maximum number of pixels for an object to be included.

If 0 no maximum area is defined.

Object filter

Use an expression to further exclude unwanted objects based on shape.

Properties that can be used for the Expression:

  • Area

  • Length

  • Width

  • Circumference

  • Regularity

  • Roundness

  • Angle

  • D1

  • D2

  • X

  • Y

  • MaxBorderDistance

  • BoundingBoxArea

For details on each available property see: Object properties Details


Takes away x numbers of pixels at the borders of the objects included in images.


  • Normal

    • Can have both separated and combined objects.

  • Separate adjacent objects

    • All objects are defined separately.

  • Merge all objects into one

    • All objects are defined as one.

  • Merge all objects per row

    • All objects per row segmentation are defined as one.

  • Merge all objects per column

    • All objects per column segmentation are defined as one.

Only visible when applicable

Link output objects from two or more segmentations to top segmentation. Descriptors can then be added to the common object output and will be calculated for objects from all segmentations.

Descriptors after object will be calculated for all three segmentations (Sample1, Sample2 and Sample3)

The segmentations must be at same level to be available for linking.

Simple python script for segmentation

import sys

    with open(sys.argv[1], "r") as f:
        frames =
    result = []
    for frame in frames:
        values = list(map(float, frame.split(";")))
        if len(values) > 0 and values[1] < 18.0:


except Exception as inst:
    exc_type, exc_obj, exc_tb = sys.exc_info()
    print("Error: {0}, at line {1}".format(inst, exc_tb.tb_lineno))         

Example input to the script

The input to the script is saved to a temp file. The path to the temp file is then passed as a parameter to the python script. The script has to read this file to collect the input from Breeze. This is since the max parameter length is too short to hold all data needed. This type of segmentation is not recommended if performance is an priority as it has a lot of overhead.

[[17.0, 16.0, 19.0], [18.0, 17.0, 21.0], [19.0, 18.0, 22.0]]

Example output from the script

The output has to be printed from the python script to be returned to Breeze: print(result).

[1, 1, 0]

Everything inside the yellow line has now been selected as a sample.