惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
爱范儿
爱范儿
罗磊的独立博客
IT之家
IT之家
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
N
Netflix TechBlog - Medium
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
U
Unit 42
Engineering at Meta
Engineering at Meta
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
H
Help Net Security
博客园_首页
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
人人都是产品经理
人人都是产品经理

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - BrugolaOvoidale/Visical: A cross-platform tool f...
BrugolaOvoid · 2026-06-15 · via Hacker News: Show HN

A cross-platform C++ application for camera calibration with modular quality evaluation and multi-source image acquisition.


Introduction • Features • Installation • Quick Start • Architecture • License

C++ OpenCV wxWidgets Platform

Introduction

Visical is a cross-platform camera calibration tool built with OpenCV and wxWidgets. It combines a OpenCV-driven calibration pipeline with a non-blocking evaluation framework, where calibration can proceed even if individual evaluations fail. In this design, OpenCV remains the authoritative source of the process, while evaluation acts as an independent, quality-assessment layer.

Features

  • Multi-source acquisition - load images from disk, capture from webcams, or connect to GigE/USB3 Vision cameras via Aravis.
  • Full calibration pipeline - OpenCV-driven board detection, pose estimation, and camera optimization in a single workflow.
    • Supports single-camera calibration. Stereo and multi-camera setups are currently out of scope.
    • Supports chessboard and circles grid patterns.
  • Modular evaluation framework - independent quality plugins assess boards and calibration results. Plugins are independently enabled, disabled, configured, and persisted as JSON; covers individual boards, board sequence, and final calibration metrics
  • Cross-platform - runs on Linux and Windows, built with C++23, CMake, and vcpkg

Installation

Quick Installation (Recommended)

Prebuilt binaries are available for supported platforms through the GitHub Releases page.

  1. Open the repository's Releases page.
  2. Download the latest package for your platform.
  3. Extract the archive.
  4. Launch Visical.

No compilation or dependency installation is required.

Build from Source (Advanced)

This project uses CMake as its build system, with configuration managed through CMakePresets.json. Dependencies are handled via vcpkg, defined in vcpkg.json.

The project is primarily developed and tested with Clang, but other C++ compilers may work with minimal adjustments.


Prerequisites

Before building, ensure you have the following installed:

  • CMake (≥ 3.20 recommended)
  • Clang (or another C++23-compatible compiler)
  • Git
  • vcpkg

Setup vcpkg

If vcpkg is not already installed:

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh   # Linux
.bootstrap-vcpkg.bat   # Windows

Make sure that environment variable VCPKG_ROOT is correctly set.


Clone the Repository

git clone https://github.com/BrugolaOvoidale/Visical.git
cd Visical

Install Dependencies

Dependencies are automatically resolved via vcpkg.json during CMake configuration.


Configure & Build

Using CMake presets (recommended):

cmake --preset <preset-name>
cmake --build --preset <preset-name>

To list available presets:

Alternatively, you can configure manually:

cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=<path-to-vcpkg>/scripts/buildsystems/vcpkg.cmake
cmake --build build

Notes

On Linux, vcpkg may not be able to install all third-party dependencies automatically. If this happens, install the missing dependencies manually. Check the CMake configuration output for details.


Quick Start

Before starting, make sure your calibration board is properly printed and mounted. Refer to the official OpenCV guide: Create Calibration Pattern. Mount it rigidly on a flat surface before acquisition.

  • Configure - on the Setup page, set the image size in pixels ("Camera intrinsics" box). Then navigate to the Detection page → Setup sub-page, choose the image source, and set the board parameters ("Detection parameters" box).
  • Detect - navigate to the Detection sub-page and load images using the folder icon. The app will display images on the left and detection and evaluation results on the right.

  • Evaluate - quality assessments per board and per sequence are also displayed.

  • Calibrate - once satisfied with the dataset, click "Accept dataset": Visical will automatically move to the Calibration page, run the calibration, and return the camera parameters, evaluation results, and the option to see the images undistorted.

  • Save - export the calibration result to a JSON file using the save button on the left.

Example of a calibration result in a JSON file:

{
    "camera": {
        "focal_length_x": 3778.998517383195,
        "focal_length_y": 3795.4120564419795,
        "principal_point_x": 550.0582420918876,
        "principal_point_y": 648.8049607977425
    },
    "distortion_model": {
        "standard": {
            "k1": -0.39599703363377464,
            "k2": 1.044774916481398,
            "p1": 0.0007796825585351178,
            "p2": 0.0009423617956795151,
            "k3": -9.679592041202422
        }
    },
    "cameraModel": {
        "reprojectionError": 0.14116148019896574
    }
}

Architecture

Visical is organized into four layers:

  • Acquisition: where images are loaded or grabbed, ready to be analyzed by the board detector.
  • Detection: where OpenCV will try to find board on images and estimate their pose.
  • Calibration: where OpenCV will optimize the camera using detected boards.
  • Evaluation: runs along both Detection and Calibration layers, evaluating quality of detected boards and calibration results. It behaves as a non-authoritative guide, giving only advice to get a good calibration, but does not block it, even if evaluations fails.

Acquisition Layer

Visical supports two image acquisition modes:

  • Disk loading - import existing images from the filesystem for offline calibration workflows.
  • Live camera capture - acquire images directly from hardware:
    • GenICam-compliant cameras via Aravis.
    • Webcams via OpenCV's VideoCapture interface.

Detection Layer

During detection, OpenCV will try to find a board on image and estimate its pose. The Visical system will store all detection result (found or not), to allow re-detection or re-evaluation.

Calibration Layer

After collecting a dataset of boards, Visical will run calibration using only detected board. This is the only constraint by OpenCV, boards with failed evaluation are still used.

Evaluation Framework

Quality evaluation is organized around a set of modular, composable plugins that can assess:

  • Single detected board - evaluates the geometric quality of an individual detected calibration board.
  • Detected board sequence - assesses the collected board set as a whole.
  • Single calibrated board - inspects each board's contribution to the final calibration result.
  • Calibration result - evaluates the calibration outcome through reprojection errors and related metrics.

Each plugin is independent and can be enabled, disabled, configured and saved in JSON files. The evaluation system is intentionally decoupled from the calibration pipeline, in order to keep OpenCV as the only authoritative source of the calibration process.

Examples

The Constrast check calculates contrast metrics to ensure that markers are sufficiently distinguishable from the background.

The FOV Coverage check analyzes the board sequence to determine if the detected points sufficiently cover the Field of View (FOV).


Contributing

Feedback and bug reports are very welcome.

Reporting Issues

If you encounter a bug or unexpected behavior, please open an issue and include:

  • A clear description of the problem
  • Steps to reproduce it
  • Your platform (Linux / Windows) and compiler version
  • Any relevant error output or screenshots

Pull Requests

If you'd like to contribute code, please open an issue first to discuss the change. This avoids wasted effort on PRs that may not align with the project's direction.


Limitations & Roadmap

Visical is actively developed but currently scoped to a specific set of use cases. The following lists what is not yet supported and what may be addressed in the future.

Current Limitations

  • Single-camera only — stereo and multi-camera calibration setups are not supported. Each calibration session produces intrinsics for one camera.
  • Chessboard and circles grid only — ArUco markers, ChArUco boards, and other OpenCV-supported patterns are not yet available in the detection pipeline.

Possible Future Directions

These are not commitments — just honest candidates for future work based on current gaps:

  • Stereo calibration — extending the pipeline to support camera pairs and extrinsic estimation between them.
  • Additional board patterns — ArUco and ChArUco support in particular, since they are more robust under partial occlusion and in low-texture scenes.

Contributions addressing any of the above are welcome. See Contributing.


License

This project is licensed under the Apache License 2.0.

You may use, distribute, and modify this software under the terms of the Apache 2.0 license. See the LICENSE file for the full license text.