You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.4 KiB
45 lines
1.4 KiB
#include <opencv2/viz2d/viz2d.hpp> |
|
#include <opencv2/viz2d/nvg.hpp> |
|
|
|
using namespace cv; |
|
using namespace cv::viz; |
|
|
|
constexpr int WIDTH = 1280; |
|
constexpr int HEIGHT = 720; |
|
|
|
int main(int argc, char** argv) { |
|
Ptr<Viz2D> v2d = Viz2D::make(Size(WIDTH, HEIGHT), "Font Rendering with GUI"); |
|
//The text color. NanoGUI uses rgba with floating point |
|
nanogui::Color textColor = {0.0f, 0.0f, 1.0f, 1.0f}; |
|
//The font size |
|
float size = 40.0f; |
|
//The text |
|
string hw = "hello world"; |
|
//Setup the GUI |
|
v2d->nanogui([&](FormHelper& form) { |
|
//Create a light-weight dialog |
|
form.makeDialog(5, 30, "Settings"); |
|
//Create a group |
|
form.makeGroup("Font"); |
|
//Create a from variable. The type of widget is deduced from the variable type. |
|
form.makeFormVariable("Font Size", size, 1.0f, 100.0f, true, "pt", "Font size of the text crawl"); |
|
//Create a color picker |
|
form.makeColorPicker("Text Color", textColor, "The text color"); |
|
}); |
|
|
|
v2d->run([&]() { |
|
v2d->clear(); |
|
//Render the text at the center of the screen |
|
v2d->nvg([&](const Size& sz) { |
|
using namespace cv::viz::nvg; |
|
fontSize(size); |
|
fontFace("sans-bold"); |
|
fillColor(Scalar(textColor.b() * 255, textColor.g() * 255, textColor.r() * 255, 255)); |
|
textAlign(NVG_ALIGN_CENTER | NVG_ALIGN_TOP); |
|
text(sz.width / 2.0, sz.height / 2.0, hw.c_str(), hw.c_str() + hw.size()); |
|
}); |
|
//Display the framebuffer in the native window |
|
return v2d->display(); |
|
}); |
|
} |
|
|
|
|