Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dovyski/cvui
A (very) simple UI lib built on top of OpenCV drawing primitives
https://github.com/dovyski/cvui
computer-vision cpp gui imgui opencv opencv-drawing-primitives python ui
Last synced: 2 days ago
JSON representation
A (very) simple UI lib built on top of OpenCV drawing primitives
- Host: GitHub
- URL: https://github.com/dovyski/cvui
- Owner: Dovyski
- License: mit
- Created: 2016-06-16T09:07:21.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2022-09-04T19:53:57.000Z (over 2 years ago)
- Last Synced: 2024-12-21T10:09:27.867Z (2 days ago)
- Topics: computer-vision, cpp, gui, imgui, opencv, opencv-drawing-primitives, python, ui
- Language: C++
- Homepage: https://dovyski.github.io/cvui/
- Size: 1.59 MB
- Stars: 836
- Watchers: 53
- Forks: 213
- Open Issues: 56
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
README
cvui
=====
A (very) simple UI lib built on top of OpenCV drawing primitives. Other UI libs, such as [imgui](https://github.com/ocornut/imgui), require a graphical backend (e.g. OpenGL) to work, so if you want to use imgui in a OpenCV app, you must make it OpenGL enabled, for instance. It is not the case with cvui, which uses *only* OpenCV drawing primitives to do all the rendering (no OpenGL or Qt required).![image](https://raw.githubusercontent.com/Dovyski/depository/master/cvui.png?20180627)
Features
--------
- Lightweight and simple to use user interface;
- Header-only with no external dependencies (except OpenCV);
- Based on OpenCV drawing primitives only (OpenGL or Qt are not required);
- Friendly and C-like API (no classes/objects, etc);
- Easily render components without worrying about their position (using rows/columns);
- Simple (yet powerful) mouse API;
- Modest number of UI components (11 in total);
- Available in C++ and Python (pure implementation, no bindings).Build
-----
cvui is a header-only lib that does not require a build. Just add `cvui.h` (or `cvui.py`) to your project and you are ready to go. The only dependency is OpenCV (version `2.x` or `3.x`), which you are probably using already.Usage
-----
Check the [online documentation](https://dovyski.github.io/cvui) or the [examples](https://github.com/Dovyski/cvui/tree/master/example) folder to learn how to use cvui. The general usage in C++ and Python is shown below.Usage in C++:
```cpp
#include// One (and only one) of your C++ files must define CVUI_IMPLEMENTATION
// before the inclusion of cvui.h to ensure its implementaiton is compiled.
#define CVUI_IMPLEMENTATION
#include "cvui.h"#define WINDOW_NAME "CVUI Hello World!"
int main(int argc, const char *argv[])
{
// Create a frame where components will be rendered to.
cv::Mat frame = cv::Mat(200, 500, CV_8UC3);// Init cvui and tell it to create a OpenCV window, i.e. cv::namedWindow(WINDOW_NAME).
cvui::init(WINDOW_NAME);while (true) {
// Fill the frame with a nice color
frame = cv::Scalar(49, 52, 49);// Render UI components to the frame
cvui::text(frame, 110, 80, "Hello, world!");
cvui::text(frame, 110, 120, "cvui is awesome!");// Update cvui stuff and show everything on the screen
cvui::imshow(WINDOW_NAME, frame);if (cv::waitKey(20) == 27) {
break;
}
}return 0;
}
```Usage in Python:
```python
import numpy as np
import cv2
import cvuiWINDOW_NAME = 'CVUI Hello World!'
# Create a frame where components will be rendered to.
frame = np.zeros((200, 500, 3), np.uint8)# Init cvui and tell it to create a OpenCV window, i.e. cv2.namedWindow(WINDOW_NAME).
cvui.init(WINDOW_NAME)while True:
# Fill the frame with a nice color
frame[:] = (49, 52, 49)# Render UI components to the frame
cvui.text(frame, 110, 80, 'Hello, world!')
cvui.text(frame, 110, 120, 'cvui is awesome!')# Update cvui stuff and show everything on the screen
cvui.imshow(WINDOW_NAME, frame)if cv2.waitKey(20) == 27:
break
```License
-----
Copyright (c) 2016 Fernando Bevilacqua. Licensed under the [MIT license](LICENSE.md).Change log
-----
See all changes in the [CHANGELOG](CHANGELOG.md) file.