Vision Node INI
visionnode.ini is the configuration file for Broox Vision Node.
It resides in the user's local data folder by default (hidden) but can be edited in the application UI.
Sections
logging
loglevel: Numeric or string (INFO, DEBUG, WARN)logfile: Relative or absolute path/name of the logfile. If no value is given, default to the user's AppData/Local ( windows) or .cache (Linux) folder.
[logging]
loglevel = INFO
logfile = visionnode.log
engine
pipeline: Name or Path (relative or absolute) to the startup pipeline.rate_limit_fps: floating point number, absolute rate limit of frame ingestion.max_interactive_height: Maximum height of the preview window. If not set, will be the camera input height. If set, the preview window will be scaled down to this height.- Advanced options:
webservices_host/webservices_port: IP and port where the AST and webservices are started. Defaults to localhost:5000rpc_endpoint/rpc_notify: Internal webservice/engine ports. Defaults totcp://127.0.0.1:5556and:5557.debug_queue_lengths: Boolean, only in debug versions, print internal queue lengths.debug_webservices: Start the AST window in debug mode.
[engine]
pipeline = pipelines/skeleton-osc.yml
rate_limit_fps = 24
camera
Camera definition section. See Cameras.
AST Values (internal)
Additional values starting with underscore (_xxxxxx) are used internally by AST and should not be manually changed.
Zones
Zones are defined via AST, and are recorded as a list of pairs [x,y] in normalized coordinates over the whole picture.
[camera]
zones.contour_enabled0 = true
zones.contour_name0 = Corner
zones.contour0 = [[0.0, 0.0], [0.5, 0.5], [0.5,0.0], [0.0,0.0]]
zones.contour_semantics0 = count
zones.contour_color0 = #ff0000
Gates
Gates are defined via AST, and are recorded as a list of pairs [x,y] in normalized coordinates over the whole picture.
Point order is important, as it defines the gate inside and outside parts. Using a "Right hand" rule, the normal points
to the "inside" of the gate. That is, given a pair of points [A,B], [C,D], the vector (x,y) = [C-A,D-B] is the
tangent, rotate 90º clockwise to get the normal vector (x,y) = (-y,x) (note that coordinates are screen-space, Y
positive downwards).
OUTSIDE
1 2
[A,B] *---------* [C, D]
/ | | \
0 * |<--| \
| \
v * 3
INSIDE
[camera]
gates.gate_enabled0 = true
gates.gate_name0 = Gate
gates.gate_points0 = [[0.0, 0.0], [0.5, 0.5], [0.5,0.0], [0.0,0.0]]
autostart
enabled: 0/1 wether to automatically start the vision service upon opening the UI.
[autostart]
enabled = 0
controller
Broox Controller Node to connect to. client_id is automatically assigned on first connection and can be checked in
Broox Studio.
[controller]
id = DEVEL-CONTROLLER
ip = 192.168.0.1
port = 9912
config_url = http://192.168.0.1:9912/config
client_id = 51503b18-2a45-486e-9c22-1bed2525f2dd
pipeline
This section(s) allow for custom settings to the selected pipeline values.
enable_analytics: boolean (0/1,true/false,yes/no,on/off) — whether to send analytics to Broox Studio.processor.parameter = value: sets parameterparameteron processorprocessor. If the parameter does not exist in the pipeline, it is appended.processor.networks.netname.kwarg = value: sets kwargkwargon the network namednetnameinsideprocessor. The network must already exist in the pipeline; otherwise the override is logged and ignored.processor.networks.netname.class = ClassName: swaps the implementation class of the network.
Overrides whose processor or network name does not match anything in the loaded pipeline produce a WARNING in
the log and are otherwise ignored. Typos are therefore silent at the engine level but visible in the log.
Additional [pipeline:pipeline-name:<suffix>] sections are merged on top of [pipeline] whenever the running
pipeline matches pipeline-name. The <suffix> part is purely a human grouping label — the engine matches by
the pipeline-name prefix only and merges every matching section into a single flat dictionary, so suffixes
do not restrict the override to a specific processor on their own. Use the dotted-key forms above to scope
overrides.
[pipeline]
enable_analytics = 1
report.enable_http = false
report.send_status_post_url = http://localhost:8085
report.send_status_time_interval = 1.0
[pipeline:audience-analytics-low:traffic]
detector.threshold = 0.5
detector.networks.class_finder.device = GPU ; Use GPU for this network
detector.networks.class_finder.model = yolov8n ; Use custom model for this network
[pipeline:audience-analytics-low:agegender]
agegender.enabled = true
[pipeline:audience-analytics-low:api_output]
report.enable_mqtt = false
report.send_status_mqtt_channel = /vision
report.enable_http = false
report.send_status_post_url = http://localhost:8085
report.send_status_time_interval = 0
osc.enabled = false
osc.target_host = 127.0.0.1
osc.target_port = 15000