VisionBase provides the inspection host — camera pipeline, ROI tooling, overlays, the results bus, communication, and reporting — so a custom component implements only its processing logic. Components are .NET plugins with access to the host's OpenCvSharp and ONNX Runtime. A packaged plugin is loaded at runtime; changed packages are reloaded without restarting the application.
Subclass VisionComponentBase and override ProcessImage(): image in, results and overlays out. The base class handles timing, statistics, and exception capture.
Use the host's OpenCvSharp and ONNX Runtime (DirectML GPU) directly. They are shared from the host, so an OpenCV Mat passes across the plugin boundary without conversion.
Combine threshold, blob, and edge operations with model inference in the same pipeline. Models can be trained in the application and exported to ONNX.
Each plugin loads in its own AssemblyLoadContext. A file watcher reloads a changed package within about a second, so changes can be tested without restarting.
The example is a complete, loadable component: threshold, find blobs, draw overlays, and return measurements. With a manifest.json and a post-build packaging step it appears in the tool list — on Windows today, with the same core targeting Linux/Avalonia and Raspberry Pi.
Bundle additional dependencies inside the plugin package; shared libraries are resolved from the host.
runtimes/win-x64
Per-component Ed25519 licensing
Host callbacks wired by reflection
We can provide the component development guide and a buildable starter, so a custom tool can be added to an existing inspection.