首页 > 其他 > 详细

camke(6)配置pangolin 3菜单栏和按键交互

时间:2021-06-06 21:16:22      阅读:66      评论:0      收藏:0      [点我收藏+]

 

 

技术分享图片

 

 

技术分享图片

 

 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

  

 

camke(6)配置pangolin 3菜单栏和按键交互

原文:https://www.cnblogs.com/gooutlook/p/14855767.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!