Skip to main content

FalcoCV — Industrial Machine Vision Framework

PyPI Python Qt OpenCV CI

FalcoCV

FalcoCV is a modular machine vision environment for industrial automation. It combines a workflow-driven tool pipeline with real-time image processing, inspection, depth/3D analysis and camera acquisition, plus a web-based HMI for operator dashboards.

FalcoCV is under active development: interfaces and job formats may change between releases.

Highlights

  • Workflow engine — chain tools in an explicit execution order; the list order is the contract and connections feed each tool's inputs. Jobs are saved as .cvj files.
  • Vision toolset — acquisition, image enhancement, segmentation, template and shape matching, code reading, measurement, line/circle fitting, deep-learning inspection and 3D analysis.
  • Depth + 3D - depth/range loading, the native .fcd LZ4 container, point clouds, plane fitting and a 3D viewer with world-space overlays. See docs/DEPTH_FORMATS.md and docs/3D_CONVENTIONS.md.
  • Fixture system — per-image coordinate transforms; tools work in fixture-relative coordinates.
  • Vector overlays — annotations are mathematical primitives rendered only by visible viewers; source pixels are never modified.
  • Scripting + debugger — editor, breakpoints, stepping and variable/watch panels. HMI runtime objects can be passed to job Python Scripts through the shared context / engine_context; see docs/HMI_CONTEXT.md.
  • HMI designer + web server — design operator dashboards, deploy them to a FastAPI server and open them from any browser.
  • Communications runtime — generic devices and tags in the .hmi project, editable from the HMI Designer, with local and live signal monitors, Omron, Beckhoff ADS, Siemens S7 and ADLINK DASK I/O drivers, plus Modbus TCP and OPC UA clients and server runtimes. Drafts can be saved with missing fields; Deploy and Signal Monitor require a complete configuration. See docs/COMMS.md.
  • Persistent workspace — window geometry, dock placement, splitter sizes and table column widths are restored between runs. Use View > Reset all views to return the current workspace to its defaults.
  • Camera acquisition — GigE Vision and USB3 Vision cameras through Harvesters and a vendor GenTL producer.

Screenshots

Generated with the bundled demo project by scripts/capture_readme_screenshots.py. The 3D view uses a synthetic point cloud; the HMI dashboard image is the Designer preview with representative runtime values.

FalcoCV Vision Editor FalcoCV 3D point-cloud viewer
Vision Editor
Workflow, result image and per-tool timing for the demo inspection job.
3D analysis
Interactive point-cloud viewer with a world-space ROI and world-coordinate navigation.
FalcoCV HMI Designer FalcoCV HMI dashboard preview
HMI Designer
Job slots, dashboard widgets, live preview and deployment controls.
HMI dashboard
Operator view with verdict, measurement and runtime log (preview data).
FalcoCV Modbus and OPC UA server mappings
Communications servers
Explicit Modbus TCP and OPC UA mappings exposed from HMI communications tags.

Install

FalcoCV is distributed as a wheel for Windows x86_64 and Linux x86_64 (CPython 3.13.x):

python -m pip install falcocv

Python 3.13 is the only supported version for this release. The native kernel ships inside the wheel, so no compiler is needed. On Windows, install the Microsoft Visual C++ 2015-2022 Redistributable (x64); ONNX Runtime and the native kernel use that runtime. On platforms without a wheel, pip builds it from the sdist and needs Python 3.13.x, CMake 3.20+ and a C++17 compiler. On Linux the wheels target glibc 2.34+ (Ubuntu 22.04+, Debian 12+, RHEL 9+), which is what PyQt6 requires. GigE and USB3 Vision cameras only need the vendor GenTL producer (.cti file); the Harvesters integration is installed by default.

From source

Requires CPython 3.13.x:

git clone https://github.com/jaesc/falcocv.git
cd falcocv
python -m pip install ".[dev]"

PLC communications

The optional PLC extra installs the Omron, Beckhoff and Siemens libraries:

python -m pip install "falcocv[plc]"
# from source:
python -m pip install -e ".[plc]"

It includes aphyt (Omron), pyads (Beckhoff ADS) and python-snap7 (Siemens S7). Driver imports are lazy, so the rest of FalcoCV can be used without these dependencies. Write verification is opt-in; when enabled, write_retries adds verification retries, while without verification the driver trusts the library response and never retries. A device configuration may be saved incomplete (for example Siemens without a host) and completed later; only Deploy and execution require every field and tag address. Hardware-specific prerequisites:

  • Omron: reachable NJ/NX controller; no persistent dictionary file is used.
  • Beckhoff: TwinCAT ADS route configured in the router. The optional ip_address is only needed for Linux or routed/NAT networks. TcAdsDll.dll comes from TwinCAT or %APPDATA%/FalcoCV/native/beckhoff/.
  • Siemens: PUT/GET enabled on S7-1200/1500 and non-optimized DBs for absolute addressing. S7-300/400 use absolute addressing normally. The python-snap7 3.x package is pure Python and needs no DLL.
  • ADLINK: install the DASK SDK for the card model on Windows x64. FalcoCV detects the runtime automatically; if it is not on the system path, use the Driver setup actions to select the SDK folder or place the DLLs in %APPDATA%/FalcoCV/native/adlink/. Test card confirms that the card can be registered. Digital and analog DASK tags are supported.
  • Beckhoff: the Driver setup panel checks pyads and TcAdsDll.dll and always reminds you to configure the ADS route. Test connection verifies the route and target AMS Net ID before deploying.

For Modbus TCP and OPC UA clients/servers install the protocol extra:

python -m pip install "falcocv[protocols]"

The Servers tab exposes existing tags through explicit Modbus TCP or OPC UA mappings. Modbus has no authentication; OPC UA server security is anonymous in this first release, so keep both on trusted networks.

Models

ONNX models are not bundled with the package; they are downloaded on first use to:

  • Windows: %APPDATA%/FalcoCV/models
  • Linux: $XDG_DATA_HOME/FalcoCV/models (or ~/.local/share/FalcoCV/models)

The splash screen shows progress and startup waits until the models are ready. To pre-download or repair them:

falcocv download-models
# or the dedicated entry point
falcocv-download-models

To use an existing local bundle instead (offline or pre-provisioned machines), point FALCOCV_MODELS_DIR at the folder that contains the model files.

Downloads come from a GitHub Release. Override the base URL to use a mirror:

export FALCOCV_MODELS_URL="https://mirror.example.com/falcocv/models-v1"

Run

Command What runs
falcocv or python -m falcocv Vision Editor (desktop)
falcocv-server Web server / dashboard
falcocv-hmi Standalone HMI Designer
falcocv download-models Download/verify ONNX models

The web dashboard is served at http://localhost:8000; HMI pages are available at http://localhost:8000/?id=<project_id>.

Demo

examples/demo_inspection.cvj locates a bracket with Shape Match, uses it as a fixture, counts the two through-holes with Blob Detector and measures their distance with Measurement:

Demo result

git clone https://github.com/jaesc/falcocv.git
cd falcocv
falcocv run examples/demo_inspection.cvj --output results.json

The dataset is 14 synthetic images (10 OK, including cosmetic scratches and stains; 4 NG: missing/blocked/extra hole and wrong hole spacing). Image generation, the trained job and the annotated results are scripted and reproducible — see examples/README.md. All of it is original CC0 artwork.

Architecture

src/falcocv/
├── core/        Workflow engine, VisionImage, overlays, ROI, model resolver
├── tools/       Vision tools
├── ui/          PyQt6 widgets, viewers, ROI editors, HMI designer
├── web/         FastAPI server, HMI workers, dashboard
├── comms/       devices, tags, PLC/protocol drivers, Modbus/OPC UA servers
├── main.py      Vision Editor
├── hmi_designer.py  standalone HMI Designer
├── cli.py       `falcocv` / `python -m falcocv`
└── version.py   single source of truth for the package version

cpp/kernel/      Native kernel (no OpenCV)
tests/           Pytest suite

FalcoCV is Python-first: tools and algorithms use OpenCV/NumPy unless a measured benchmark shows a real end-to-end win. A small C++ kernel collects only those performance-critical hot paths, so the native surface stays minimal and does not shape the tool API. It has no OpenCV dependency; OpenCV is provided by opencv-python.

See ARCHITECTURE.md for the module layout and benchmarks/ for the performance harness.

Development

git clone https://github.com/jaesc/falcocv.git
cd falcocv
python -m pip install -e ".[dev]"
pytest -q --ignore=tests/test_trainer_equivalence.py

An editable install builds the native kernel through scikit-build-core. To run directly from the source tree, build the kernel once and point PYTHONPATH at src:

build_kernel.bat          # Windows
./build_kernel.sh         # Linux/macOS

set PYTHONPATH=src        # Windows
export PYTHONPATH=src     # Linux/macOS
python -m falcocv

Native kernel

build_kernel.bat            :: configure + build + deploy to cpp/bin
build_kernel.bat --rebuild  :: clean cache first
build_kernel.bat --clean    :: remove artifacts
./build_kernel.sh

Requirements: CMake 3.20+, a C++17 compiler, pybind11 and OpenMP. On Windows, Visual Studio 2022 with the "Desktop development with C++" workload is enough. No OpenCV build is required.

Testing

pytest -q --ignore=tests/test_trainer_equivalence.py

Targeted runs:

pytest -q -m integration   # headless workflows, jobs, barcode, depth
pytest -q -m ui            # offscreen Qt config dialogs / main window
pytest -q -m web           # FastAPI / HMI endpoints
falcocv self-test          # installation smoke test (also works from a wheel)

The suite covers the workflow engine, vision tools, UI (offscreen Qt) and web/HMI endpoints. The trainer-equivalence test needs the optional training toolchain (torch/timm) and is excluded.

License

FalcoCV is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

FalcoCV is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE for the full text.

Metadata

Release files for falcocv 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for falcocv 1.2.0
File Size Uploaded Provenance Actions
falcocv-1.2.0.tar.gz 10.0 MB Without provenance Details for falcocv-1.2.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for falcocv 1.2.0
File Interpreter ABI Platform Actions
falcocv-1.2.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for falcocv-1.2.0-cp313-cp313-win_amd64.whl
falcocv-1.2.0-cp313-cp313-manylinux_2_34_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ x86-64 Details for falcocv-1.2.0-cp313-cp313-manylinux_2_34_x86_64.whl

Total release size: 13.1 MB

Release files / falcocv-1.2.0.tar.gz

Download URL falcocv-1.2.0.tar.gz
Size 10.0 MB
Tags Source
SHA-256 checksum
How to use checksums
d1d89b44c5649377bfb22f1e74c36c0d7406f32e39925d77df5e5120c4af56ca
BLAKE2b-256 checksum
How to use checksums
38fd9e0b4b82ac9fac606da5f40a3ff384a2d02306e1665acbe1ff0be762bb03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / falcocv-1.2.0-cp313-cp313-win_amd64.whl

Download URL falcocv-1.2.0-cp313-cp313-win_amd64.whl
Size 1.6 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
1046e8a519dc4f823b8b288d84663ccc9fe39b3ac1958414dc7f248f1660f2b7
BLAKE2b-256 checksum
How to use checksums
727e04cba4e12725fbe0b8e9b11820e71dd202bef6be6efc975837667072ff87
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / falcocv-1.2.0-cp313-cp313-manylinux_2_34_x86_64.whl

Download URL falcocv-1.2.0-cp313-cp313-manylinux_2_34_x86_64.whl
Size 1.5 MB
Tags CPython 3.13 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
3115a57e2bab157419e17e5e798c056b4e8904673670e195240d23b122f2ec99
BLAKE2b-256 checksum
How to use checksums
ba39a8048b70c6a025b3e49f94dc215f6f2965a8fe960b239defc9167f694f8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Security for falcocv 1.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page