New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
OE-24 "Revised HighGUI Module" discussion #11019
Comments
imgui gives you both OpenGL buttons as well as (optionally embedded) font loading. |
GLFW + imgui similar to the approach used by librealsense (realsense-viewer) maybe? |
What do we want to do with highgui module? menu, button, slider, file browser |
do we want a highui module for all platforms? android, ios, linux, windows, opencv.js |
Must we use a third party lib ? wikipedia list and previous post gtkmm |
I confirm ImGui works very well at least on Windows and Linux. Should work on Mac OS X too. As example, I'm mixing OpenCV + ImGui + OpenGL + SDL2 + NativeFileDialog + AweSomeFont an more in miniDart ( see details here : https://github.com/ebachard/miniDart ). Last, there are other projects who worth a try:
|
ImGui is definitely the first thing to look it; probably, it's too much for us, but the license should let us extract some essential parts out of it.
plaforms - just desktop ones. Android and iOS have their own, sometimes strict, guidelines on how to do UI. We are not going to pretend our UI is production-ready. HighGUI is just for experiments. web interface is also out of scope, because things are done quite differently in web. use of 3rd-party UI toolkits. I would avoid using them as much as we can. Hopefully, we can do everything we want with GTK+ + OpenGL on Linux/BSD, Cocoa + OpenGL on Mac, Win32 + DirectX on Windows. |
@paroj, DirectX on Windows is much better supported than OpenGL, so, I think, we will need it. |
@ebachard, thanks for the links! cvui and CanvasCV look quite interesting, indeed! |
Any downvote over Qt ? It sounds always a nice thing to use |
Another reference based only on GLFW, multiplatform, works on windows linux and macos. Non blocking UI and with buttons and other common ui, zoom images, plot tools, histogram in real time etc. |
Apple is concidering OpenGL and OpenCL as deprecated technologies. At the moment Vulkan seems to be the way to go (on Mac OS Vulkan + https://github.com/KhronosGroup/MoltenVK). |
I vote for using Qt. Qt works over all major platforms and will support Vulkan on Mac over MoltenVK. Qt has many developers that extend and maintain the library. This is a very importand aspect because you dont want to implement code for a library that only depends on one developer and then when the core developer doesnt fix stuff then your stuck. There are thousands of answered questions on stack overflow and they have a clear documentation. Qt is widely used in the industry for user interfaces like QWidgets or QML that is used in the automobile industry. Also Qt offers (or plans to offer by qt5.12) official python support. |
First over all, I'm sincerily sorry, but I don't know well Viz, and it would be great someone to complete the analysis, and add further information about it, because it's certainly a highly respectable API. That said, and before to see influence or commercial debate, I'd suggest to think twice about what is awaited, expected, and first answer @vpisarev requests. Reference : https://github.com/opencv/opencv/wiki/OE-24.-Module-HighGUI BTW, for one of them (better text rendering) I'd suggest to have a look at : http://www.hasper.info/worry-free-text-writing-into-opencv-images/ (user is @PhilLab if I'm not wrong) Licenses issues (protect the developpers and/or the project ?):
@vpisarev : I'm not sure linking a binary to some LGPL library forces the linked binary to become LGPL too. If I'm not too wrong, you only need to reverse the improvement you did in the LGPL code, in case you did some (and that's much normal imho) What are the dependencies ?
On this side, IMHO 1. cvui 2. Dear ImGui 3. Qt Easy to build ?
Qt is the last on this side : the API is extremely complete (eveything exists already), but the cost is bigger on the build side. How does it work : two diffrent schools here. Retained mode vs Immediate mode. Both have pro and cons, and I won't say more, letting people add information on this side. Binaries size :
Dear ImGui : max 700kB of binary. I'm testing since two years only, but I can say it can be mixed (including event loops) with SDL and ImGui and OpenCV (see: https://framagit.org/ericb/miniDart). e.g. miniDart in my case, uses Dear ImGui. At the end, I can play vidéos, record (without sound), extract images, and a lot of things using less than 1 MB of binary on Linux (linking with shared libraries) , and ~ 20 MB only as static on Windows. In fact, a lot of @vpisarev requests are included in miniDart (select an area, the zoom -based in Dear ImGui-, record videos and other features (using FFMPEG). It's not written, but once I'll publish the code, it will very probably become MIT one year after or something like that. That's very easy : I wrote everything on the miniDart side (no other contributor) ;-) Features :
Window Layout:
Feel free to correct me, and add any constructive information. Hope this will help in the final choice. |
(not sure if I should post here or make a new issue...) first, I'd like to establish second, after every use of is the first measure something that would be accepted as a pull request? |
It make sense for new API. Unfortunately it is too late to change that. Changing
What is about new API for that? |
I see the point in requiring a new API for this. I'd suggest I think I can come up with a patch for |
the feature request about evolution proposal OE-24
The text was updated successfully, but these errors were encountered: