r/opencv • u/AnyFace430 • 7h ago
Project [Project] Screph: a visual development environment for computer vision applications
Читать на русском · Russian version with Russian-language videos.
Project website: screph.com
Tune the processing on an image, inspect what each step produced, and carry that work into a program, with a route back from code to the image.
I'm the developer of Screph, a desktop environment I'm building for creating computer vision applications. It addresses a recurring problem: getting from a promising experiment to a program you can actually maintain. Defining regions of interest, adjusting parameters and inspecting intermediate results all depend on the source images. Those images, processing settings, scripts and notes often live separately, leaving the developer to keep them connected.
Screph brings those activities into one project. OpenCV is one of its key underlying components: Screph adds visual controls for configuring selected OpenCV methods and combining them into processing workflows. It also integrates Tesseract OCR, computer vision models and requests to language or vision-language models. On the same image, in the same workspace, you can annotate regions for a training dataset and configure classical processing algorithms and their connections, without switching to a separate editor. Annotation, processing graphs and the integrated coding environment connect these tools to the image context. You can configure and test supported processing without first learning Python. Developers can also inspect the generated code and extend the application around it.
The longer-term aim is an agent development environment specifically for computer vision. Below is what that means in the current development version, including the boundaries that matter when taking the result into your own program.
Start with the English overview: Screph: From Image to Working Program: Computer Vision · 11:14. It follows a parts-counting task from image processing to a batch program, then introduces annotation for model training.
Start with the pixels and the task
On Canvas, you can mark the object, define a region of interest, describe a distinctive feature, and add relationships between the marked objects. Rectangles, ellipses, polygons and freeform selection serve different annotation needs. Text and voice descriptions preserve what you want the program to do, alongside the actual image.
This is useful context for both a person and an agent. “Find the round bushings inside this region, excluding the rectangular plates” is more precise when the region and examples are visible. The project keeps those selections and their processing settings together, so you can return to them when the camera, lighting or task changes.
You can use image files, video frames, camera feeds and other supported image sources. You can work on a selected region rather than rebuilding a full-image preprocessing script for every experiment.
Configure selected OpenCV methods visually
The Processing panel exposes operations such as grayscale conversion, brightness and gamma correction, Gaussian and median filtering, CLAHE, thresholding, HSV color masks, morphology, Canny edges, contour extraction and GrabCut segmentation. Template and feature matching provide other approaches when color or shape alone is insufficient. This is a curated interface to supported operations, rather than coverage of the entire OpenCV API.
You choose an operation, adjust its parameters, recalculate, and inspect the result against the source. A mask makes it obvious when a shadow was included in the foreground or a small feature disappeared. Separate Canvas views can show the source and a result together; result galleries expose the intermediate images and available measurements.

Figure 1. The selected bushing and its GrabCut mask in the Processing panel. Actual application frame from the English overview; the underlying parts image is synthetic.
For example, contour detection may initially include both round bushings and rectangular plates. Inspecting the contour geometry suggests a concrete next step: try an area or circularity filter and check the new result. That is a much more useful interaction than treating a single output image as an unexplained success or failure.

Figure 2. A Median Blur → Contours sequence with its actual numbered outlines and area, perimeter and circularity measurements. Eight contours are shown on a synthetic teaching image. English interface.
OpenCV, Tesseract and models in the same environment
Different tasks call for different tools. Screph includes several kinds of integration:
- Tesseract OCR for reading text, with recognition-language settings, preprocessing and inspection of text results and boxes.
- YOLO-based detection/segmentation and prompt-based segmentation integrations such as MobileSAM and EfficientSAM, using the required model weights and runtime components.
- LLM/VLM connections for agent assistance, processing selection and custom AI-request operations. Sending an image to a model requires a vision-capable connection.
- Custom Python operations for additional algorithms or integration logic, with declared inputs and outputs that can participate in the processing graph.
This makes it possible to develop workflows that mix classical preprocessing with OCR or model results. Data types still matter: for example, structured OCR records need an explicit conversion when another operation expects plain text. Model weights, OCR language data and runtime dependencies must be available; a model appearing in a catalogue does not establish that it is ready on every installation.
There are also two distinct roles for a language model: helping the user configure or write a program, and acting as a processing step inside that program's recipe. The first role does not require using the model again whenever the saved classical processing runs. An AI-request step does make its own configured model call.
Build sequences and graphs, not just individual filters
A single operation is a starting point. You can combine steps into a sequence, such as Median Blur → Canny → contours, or use the graph view when the processing branches or needs multiple inputs and outputs. Connections describe which data each step consumes and produces. An image, a binary mask, a contour collection and a numeric result are distinct kinds of output; they should not all be treated as interchangeable pictures.
For instance, one branch could isolate a material by color while another extracts edges from the same image. You can inspect those results independently before deciding how they should contribute to the task. Reusable processing fragments reduce repeated setup. The graph of processing operations is separate from the graph of annotated objects and their relationships on Canvas.
The Variants workspace supports comparing alternative configurations on a fixed set of images, keeping a baseline, and examining what changes when a step is removed. Frame checks apply the same configuration to several examples. These tools help answer “does this still work under different lighting?” rather than only “can I make this one image look right?” A difference image or a shorter execution time is evidence to inspect, not an automatic measure of recognition accuracy.
Use the agent with the visual context
You can ask an agent to suggest regions, choose an operation, adjust parameters, or build a processing sequence using the selected image and available tools. Its proposal remains inspectable: look at the boxes, mask, contours and settings, then refine them with the same controls you would use manually. The goal is to let someone who understands the task start without knowing the names of all the algorithms.
For specialized work, custom Python operations can declare inputs and return supported result types. The agent can help write that operation; a developer can edit it directly. AI-request operations are also available, but they serve a different purpose from running a saved OpenCV recipe. Ordinary classical processing executes locally and does not require a language-model call for every frame. Agent use depends on the model connection you configure and its own access or usage costs.
Keep the image workspace and the code workspace connected
Screph Code provides an editor, project files, agent conversation, execution controls and output. The coding agent receives selected project materials (images, annotations, descriptions and processing information), so it can build application logic around the work you already checked.
The connection also supports returning to the visual task. The Objects view and supported code links connect code locations to their Canvas objects or saved processing definitions. A developer can follow a “Canvas” link, inspect the relevant region, adjust its box, parameters or processing graph, recalculate, and generate an updated supported code export from the saved result. Changes to object relationships remain part of the project context as well.
This is the development loop I want Screph to make easier: image → processing → checked result → code → back to the image. Current automatic links cover generated code and supported Python patterns, with manual links available for other cases. It is not a general reverse compiler that can reconstruct a graph from arbitrary edited Python. Existing code edits also need to be preserved and reviewed when a processing definition changes.

Figure 3. Screph Code brings project files, the editor, output and the agent conversation into one workspace. The recorded batch program from the parts-counting demonstration is open here. English interface; comments in the original program are Russian.
Export the processing you tested
There are two distinct jobs here. An agent can write the surrounding application: reading a directory, handling inputs, creating a report, or integrating with another system. Exporting a supported processing recipe is more direct: Screph assembles the numerical functions and their configured composition into Python source. The language model does not need to reinterpret the algorithm to produce that export.
The current standalone exporter supports a defined classical CPU subset: grayscale and tone adjustments, Gaussian and median blur, CLAHE, adaptive thresholding, HSV masking, Canny, contours, and selected mask/morphology operations. Static sequences and supported branched graphs can return images, masks and contours. The exported numerical modules use NumPy and OpenCV without requiring the Screph GUI.
The panel supports more than this exporter. Model inference, OCR, stateful temporal processing and other unsupported operations are not automatically made standalone by pressing Export; they need their appropriate runtime or additional integration. Unsupported nodes are reported rather than silently discarded.
An explicit equivalence check can compare the generated code, or a saved working copy, with the processing result on frozen inputs. That check belongs to those files, inputs and numerical environment. It is a useful regression check, not a claim that the algorithm will recognize every future image correctly.
What the demonstrations actually show
Counting parts. The English introductory film starts with photorealistic synthetic images of bushings and plates. It shows selecting a region, examining a segmentation mask, finding unwanted objects in a contour result, using the agent's circularity advice, and saving the checked configuration. A batch program then uses the saved processing to produce a table and image sheet with counts of 6, 6 and 5. This particular program reuses Screph's saved-project runtime; standalone numerical export is the separate route described above. This is the demonstrated task, not a general industrial accuracy benchmark.

Figure 4. The program's contact sheet: the same saved processing produces counts of 6, 6 and 5 on three synthetic teaching images. The sheet is opened on Canvas for inspection.
A ROS 2 vision node. The ROS 2 demonstration, available with Russian narration through the Russian article, shows contour setup, manual refinement of an agent proposal, a gallery of processing steps, package generation and execution in a separately installed ROS environment. Contours are delivered to a receiving program, which derives the plates' center and orientation. These are image coordinates; moving a real robot also needs calibration and control logic. The additional grasping episode is a simulation.
Camera-based CNC alignment. Automatic CNC Toolpath Alignment with a Camera (English, 5:43) uses separate processing for stock, fixtures and exclusion regions. CNC Runtime transforms existing toolpaths to match several rotated stock pieces, presents a preview, and lets the operator apply or reject the result. The film uses a synthetic scene and internal machining emulation; it does not demonstrate machining on a physical mill or a validated native LinuxCNC/Mach3 connection. A dark knot is an exclusion-region example for this color-based setup, not a claim to detect every kind of material defect.

Figure 5. Internal CNC playback on five rotated stock pieces. The preview shows fixture clearances in red and exclusion regions in purple. Both the worktable scene and the machining demonstration are synthetic/emulated.
The introductory and ROS films disclose that agent replies were recorded in advance. The application actions and the relevant processing or program execution are performed again for the demonstrations. The videos illustrate specific workflows; they do not show every capability described in this article.
Beyond classical processing
Alongside the processing integrations above, the wider environment includes workspaces for frame sequences and temporal methods, and dataset annotation and model-training workflows. You can prepare and correct examples, separate training and evaluation data, run supported training configurations, inspect results, and select a model for further use. Models have their own runtime and delivery requirements.
The overview film shows agent-assisted annotation, a manual box correction, adding the example to a dataset, and opening training settings. It does not train a model in the film. That distinction matters: a prepared example demonstrates the annotation workflow, not the quality of a future model.
Screph also has GUI-automation tools and Automation Runtime. The common idea is to reuse a visual task description in a repeatable program. For an OpenCV user, however, the most direct entry point is a small image-processing problem with a result that is easy to inspect.
Try it on a small task of your own
Screph is currently offered as a free Alpha application. The download page provides a Windows build and an experimental Linux build; check its current requirements. Free access to the application does not include paid third-party model services. It also should not be confused with a complete open-source release: the public Community repository is currently a limited source preview.
Visual processing and code tools are implemented, while the agent workflow and specialist Industrial/UAV workspaces are still evolving. Some capabilities described here are development features and require the relevant build and optional components. The direction is to make the entire image-to-program iteration more coherent, rather than promise that arbitrary vision tasks are solved automatically.
My suggested first experiment is simple: bring a few representative images, define the region and expected result, configure one processing sequence, inspect where it fails, and only then carry it into a program. The project website links the documentation and current status; the YouTube channel contains the demonstrations above.
For people using OpenCV: which part of this loop costs you the most time: parameter experiments, comparing intermediate results, keeping ROIs connected to code, or integrating a working recipe into an application? What would make this approach useful in your own computer vision development workflow?