camke(6)配置pangolin 3菜单栏和按键交互
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了camke(6)配置pangolin 3菜单栏和按键交互,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3683字,纯文字阅读大概需要6分钟。
内容图文
plotTrajectory.cpp
#include <pangolin/pangolin.h> #include <string> #include <iostream> // ----------------------------------------------------------------- // //https://blog.csdn.net/weixin_43991178/article/details/105142470 //为视窗添加一个控制面板,展示一些简单的控件操作 // ----------------------------------------------------------------- // void SampleMethod() { std::cout << "You typed ctrl-r or pushed reset" << std::endl; // std::cout << "Window width: " << i << std::endl; } // ----------------------------------------------------------------------- // int main(/*int argc, char* argv[]*/) { // 1创建视窗 pangolin::CreateWindowAndBind("Main",640,480); // 2启动深度测试 glEnable(GL_DEPTH_TEST); // 3创建一个摄像机 pangolin::OpenGlRenderState s_cam( pangolin::ProjectionMatrix(640,480,420,420,320,240,0.1,1000), pangolin::ModelViewLookAt(-0,0.5,-3, 0,0,0, pangolin::AxisY) ); // 分割视窗创建菜单 const int UI_WIDTH = 180; // 4-1 右侧用于显示视口 pangolin::View& d_cam = pangolin::CreateDisplay() //setBounds()函数前四个参数依次表示视图在视窗中的范围(下、上、左、右),可以采用相对坐标(0~1)以及绝对坐标(使用Attach对象)。 .SetBounds(0.0, 1.0, pangolin::Attach::Pix(UI_WIDTH), 1.0, -640.0f/480.0f) .SetHandler(new pangolin::Handler3D(s_cam)); // 4-2 左侧用于创建控制面板 pangolin::CreatePanel("ui") .SetBounds(0.0, 1.0, 0.0, pangolin::Attach::Pix(UI_WIDTH)); // 5 5 5创建控制面板的控件对象,pangolin中 pangolin::Var<bool> A_Button("ui.a_button", false, false); // 按钮 pangolin::Var<bool> A_Checkbox("ui.a_checkbox", false, true); // 选框 pangolin::Var<double> Double_Slider("ui.a_slider", 3, 0, 5); //double滑条 pangolin::Var<int> Int_Slider("ui.b_slider", 2, 0, 5); //int滑条 pangolin::Var<std::string> A_string("ui.a_string", "Hello Pangolin"); pangolin::Var<bool> SAVE_IMG("ui.save_img", false, false); // 按钮 pangolin::Var<bool> SAVE_WIN("ui.save_win", false, false); // 按钮 pangolin::Var<bool> RECORD_WIN("ui.record_win", false, false); // 按钮 pangolin::Var<std::function<void()>> reset("ui.Reset", SampleMethod);// // 绑定键盘快捷键 // Demonstration of how we can register a keyboard hook to alter a Var pangolin::RegisterKeyPressCallback(pangolin::PANGO_CTRL + ‘b‘, pangolin::SetVarFunctor<double>("ui.a_slider", 3.5)); // Demonstration of how we can register a keyboard hook to trigger a method pangolin::RegisterKeyPressCallback(pangolin::PANGO_CTRL + ‘r‘, SampleMethod); // Default hooks for exiting (Esc) and fullscreen (tab). while( !pangolin::ShouldQuit() ) { // Clear entire screen glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 各控件的回调函数 //1按键函数绑定 if(pangolin::Pushed(A_Button)) std::cout << "Push button A." << std::endl; //2选择框 if(A_Checkbox) Int_Slider = Double_Slider; //Double_给Slider 赋值Int_Slider // 保存整个win if( pangolin::Pushed(SAVE_WIN) ) pangolin::SaveWindowOnRender("window"); // 保存view if( pangolin::Pushed(SAVE_IMG) ) d_cam.SaveOnRender("cube"); // 录像 if( pangolin::Pushed(RECORD_WIN) ) pangolin::DisplayBase().RecordOnRender("ffmpeg:[fps=50,bps=8388608,unique_filename]//screencap.avi"); d_cam.Activate(s_cam); // glColor3f(1.0,0.0,1.0); pangolin::glDrawColouredCube(); // Swap frames and Process Events pangolin::FinishFrame(); } return 0; }
CMakeLists.txt
# cmake needs this line cmake_minimum_required(VERSION 3.1) # Define project name project(Pangolin_project) #添加Pangolin画图依赖库 find_package(Pangolin REQUIRED) include_directories(${Pangolin_INCLUDE_DIRS}) #编译可执行文件 add_executable(plotTrajectory plotTrajectory.cpp) #连接Pangolin库 target_link_libraries(plotTrajectory ${Pangolin_LIBRARIES})
编译
# 创建编译文件夹(在Pangolin文件夹下) mkdir build && cd build # 配置编译选项 cmake .. make
原文:https://www.cnblogs.com/gooutlook/p/14855767.html
内容总结
以上是互联网集市为您收集整理的camke(6)配置pangolin 3菜单栏和按键交互全部内容,希望文章能够帮你解决camke(6)配置pangolin 3菜单栏和按键交互所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。