Skip to content

PabloPicose/ComputerVisionBlueprint

Repository files navigation


Logo

Computer Vision Blueprint

Computer Vision Blueprint is an innovative open-source tool designed to simplify the process of image analysis and manipulation using OpenCV through a user-friendly graphical node editor interface.

About the Project

Product Name Screen Shot

The Computer Vision Blueprint project is an innovative open-source tool designed to simplify the process of image analysis and manipulation using OpenCV through a user-friendly graphical node editor interface. This project leverages the power of Qt 6 for its GUI components, CMake for building and compiling, and integrates OpenCV for comprehensive image processing functionalities.

This project is intended to use the same nomenclature as OpenCV, DLib, and other libraries to make it easier for users to understand and use the nodes then in their own projects.

Key Features

  • Graphical Node-Based Editor: At the heart of ComputerVisionBlueprint is a visually intuitive node editor that allows users to create, connect, and configure a series of processing steps in an easy-to-understand graphical format. This approach demystifies complex image processing workflows, making them accessible to both novices and experienced professionals alike.

  • Extensive OpenCV Integration: The project fully harnesses the capabilities of OpenCV, one of the most robust and versatile libraries for computer vision and image processing. Users can apply various operations such as face detection, image filtering, color conversion, and much more, directly within the node editor interface.

  • Custom Node Development: Users are not limited to predefined nodes. The ComputerVisionBlueprint platform supports the creation of custom nodes, enabling the addition of unique image processing functionalities tailored to specific project needs.

  • Cross-Platform Compatibility: Thanks to Qt 6, the project is designed to be cross-platform, supporting various operating systems including Windows, macOS, and Linux. This ensures that a wide range of users can access and benefit from the tool, regardless of their preferred development environment.

Motivation

The motivation behind ComputerVisionBlueprint was to address the steep learning curve associated with image processing and computer vision applications. By providing a graphical interface for constructing and visualizing workflows, the project aims to lower the barrier to entry, fostering innovation and experimentation in fields ranging from academic research to industry-specific applications.

(back to top)

Getting Started

This project uses Qt 6, CMake, Conan, OpenCV, and the NodeEditor dependency checked out at 3rdparty/nodeeditor.

Direct download

  • Linux: an AppImage is available from the tags.
  • Windows: source builds are supported with the PowerShell workflow documented below and in WINDOWS_BUILD.md.

Prerequisites

Before building from source, install:

  • Git
  • CMake
  • Qt 6
  • Python 3

The setup scripts also install Conan dependencies and clone 3rdparty/nodeeditor when needed.

Build on Linux (Ubuntu 20.04+)

./scripts/setup.sh installs the Ubuntu packages used by the project, creates a local virtual environment, installs Conan 2.11, resolves Conan dependencies for Debug and Release, and clones 3rdparty/nodeeditor if it is missing.

# one-time dependency setup
./scripts/setup.sh

# configure a release build
cmake -S . -B build/linux-release \
  -G Ninja \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_TOOLCHAIN_FILE=.conan/Release/conan_toolchain.cmake \
  -DCMAKE_PREFIX_PATH="/home/user/Qt/6.8.3/gcc_64;.conan/Release" \
  -DOpenCV_DIR=.conan/Release

# build
cmake --build build/linux-release --parallel

Use your local Qt installation root for CMAKE_PREFIX_PATH (for example /home/user/Qt/6.8.3/gcc_64). For a Debug build, switch Release to Debug in both .conan/... paths and CMAKE_BUILD_TYPE.

Build on Windows (Visual Studio 2022)

The Windows workflow uses the recently added PowerShell scripts and keeps Qt, Conan output, and the packaged executable inside the repository.

.\scripts\setup.ps1

.\scripts\compile.ps1 -Type Release -Deploy

.\build\vs2022-release\dist\ComputerVisionBlueprint.exe

setup.ps1 installs Conan 2.11 and aqtinstall, clones 3rdparty\nodeeditor, installs Qt 6.8.3 for MSVC 2022 into .qt, and prepares .conan\Debug plus .conan\Release. compile.ps1 configures a Visual Studio 2022 build, builds it, and -Deploy packages a runnable executable with windeployqt.

Additional Windows details, optional flags, and output locations are documented in WINDOWS_BUILD.md.

Manual source checkout

If you prefer to prepare the repository manually instead of using the setup scripts:

git clone https://github.com/PabloPicose/ComputerVisionBlueprint.git
cd ComputerVisionBlueprint
mkdir -p 3rdparty
git clone https://github.com/paceholder/nodeeditor.git 3rdparty/nodeeditor

You will also need a Qt 6 installation and Conan-generated dependency files before configuring CMake.

Example detected faces

Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources.

  1. Convert color In this example we will use the "Convert color" node to convert an image from BGR to Grayscale. The node has two input ports, one for the image and another for the conversion code. The output port will be the converted image. We will use the conversion code "Grayscale8"

  2. Scale image In this example we will use the "Scale" node to resize an image. The node has two input ports, one for the image and another for the scale factor. The output port will be the resized image. We will scale the image by a factor of 0.15

  3. Detect faces In this example we will use the "Detect multiscale" node to detect faces in an image. First we will use the Equalize Hist node to convert the image to an image with better contrast. Then with the "File" node we will load the cascade file and create the CascadeClassifier. Finally we will use the "Detect multiscale" node to detect the faces in the image. The output is a list of rectangles that represent the faces. Then we can simply draw the rectangles in the resized image (the equalized image or the scaled).

    We will use the cascade file "haarcascade_frontalface_alt.xml" that can be found in the OpenCV repository frontal face alt link.

  4. Detect faces on original We will scale the Rectangles x 15 and draw them on the original image

(back to top)

Roadmap

  • AppImage for Linux (download and run)

  • Windows executable

  • MacOS executable

  • Documentation

    • Specific how to build
  • User interface

    • Dark mode
    • Light mode
    • Customizable theme
    • Drag and drop nodes
    • Internationalization
      • Spanish
    • Save and load workflows
    • Help widget
  • Image conversion formats

  • Scale image

  • OpenCV

    • Equalize Hist
    • Blur
    • Gaussian Blur
    • Canny
    • Cascade Classifier
    • Pyramids
      • Pyr Up
      • Pyr Down
    • Median Blur
    • Bilateral Filter
    • Box Filter
    • SQR Box Filter
    • Filter2D
    • Erode
    • Dilate
    • MorphologyEx
    • Distance Transform
    • Watershed
  • Files

    • From file
    • From URL
  • Video

    • From file
    • From URL
  • Input video

    • Camera input
    • Take screenshot from video to an image
  • DLib integration

    • Face landmarks
  • Draws

    • Draw rectangles
    • Draw circles
    • Draw lines

See the open issues for a full list of proposed features (and known issues).

Note: the main window already exposes Save and Load actions, but the roadmap item for workflow persistence remains unchecked until that workflow is documented and complete end-to-end.

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Acknowledgments

(back to top)

About

ComputerVisionBlueprint is an open-source tool that simplifies computer vision with a drag-and-drop interface using Qt, OpenCV, and Qt Node Editor. It supports camera inputs, image processing, and basic OpenCV operations. Available as a Linux AppImage, it's designed for easy experimentation and contribution.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors