We build the software that makes cameras see, and factories remember.
Encoresys designs and ships custom vision applications in Python, OpenCV and C/C++, integrates Baumer and other GigE Vision / GenICam cameras at the SDK level, and logs every inspection to SQL Server or SQLite so nothing your line does goes unrecorded.
Four pieces, one pipeline
Most vision projects need all four. We can slot into a line you've already built, or take a part from camera selection through to the dashboard your shift supervisor checks every morning.
Custom vision applications
Detection, measurement, defect classification and OCR built around your actual part geometry and tolerances — not a generic template.
Camera & sensor integration
SDK-level integration for Baumer and other GigE Vision / GenICam cameras — triggering, exposure control, multi-camera sync.
Logging & traceability
Every frame, measurement and pass/fail result written to a database you can query, audit and build reports on.
Line integration
Vision results tied into PLC/SCADA logic in real time, so a detection actually stops, sorts or flags a part on the line.
Baumer, at the SDK level
We work directly with the Baumer NEOAPI / GenICam interface — not a screen-scraped or third-party wrapper — so you get full control over acquisition, triggering and pixel format, and a codebase you actually own.
- Hardware and software triggering, configurable exposure and gain per inspection station
- Multi-camera synchronization for multi-angle or multi-station lines
- Frame acquisition piped straight into an OpenCV / NumPy processing pipeline
- Every result — pass, fail, measurement, image reference — written to SQL on the same frame cycle
from neoapi import neoapi import cv2, pyodbc camera = neoapi.Cam() camera.Connect("BAUMER_VCXG_32") camera.f.ExposureTime.Set(4000) # microseconds camera.f.TriggerMode.SetString("On") def inspect_frame(frame): gray = cv2.cvtColor(frame, cv2.COLOR_BAYER_RG2GRAY) edges = cv2.Canny(gray, 50, 150) contours, _ = cv2.findContours( edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) ok = len(contours) == EXPECTED_FEATURES return "OK" if ok else "NG", len(contours) while True: img = camera.GetImage() frame = img.GetNPArray() result, feature_count = inspect_frame(frame) # log every cycle to SQL Server cursor.execute( "INSERT INTO inspections (ts, result, features) " "VALUES (?, ?, ?)", datetime.now(), result, feature_count) conn.commit()
Capture to alert, in five stages
This is the actual order data moves through on a running line — each stage is a real handoff, not a marketing step.
Camera & trigger setup
Baumer/GigE camera selected and configured for the part, line speed and lighting.
Image pipeline
OpenCV / C++ pipeline built around your part's real defects and tolerances.
Decision logic
Pass/fail, measurement or classification decided against your spec, in real time.
Data logging
Every result written to SQL Server or SQLite — queryable, auditable, exportable.
Line action
Result fed back to the PLC to sort, stop or flag the part — and to a dashboard for your team.
Sample project write-up
Structure for a real case study — replace the details below with numbers from an actual Encoresys project.
High-speed label verification for a packaging line
Problem: A client's packaging line ran too fast for manual label checks, and mis-applied labels were only caught downstream — after cases were already sealed.
Approach: Encoresys integrated a Baumer GigE camera above the line, built a Python/OpenCV pipeline to verify label position, print quality and barcode readability at line speed, and logged every result to SQL Server with a timestamp and image reference.
Have a part, a line, or a camera you're not sure how to integrate?
Tell us what you're inspecting and how fast it moves. We'll tell you what's realistic.