Ubuntu20.04 18.04编译视觉SLAM十四讲slambook2/ch5/rgbd

在编译这个例子时候,会产生报错,接下来我们用具体命令进行编译,首先进入到rgbd文件夹下:

mkdir build

cd build

cmake ..

make -j4

error1:

CMakeFiles/joinMap.dir/joinMap.o: In function `main':

joinMap.cpp:(.text+0x17b): undefined reference to `cv::imread(cv::String const&, int)'

joinMap.cpp:(.text+0x256): undefined reference to `cv::imread(cv::String const&, int)'

CMakeFiles/joinMap.dir/joinMap.o: In function `cv::String::~String()':

joinMap.cpp:(.text._ZN2cv6StringD2Ev[_ZN2cv6StringD5Ev]+0x14): undefined reference to `cv::String::deallocate()'

CMakeFiles/joinMap.dir/joinMap.o: In function `cv::String::operator=(cv::String const&)':

joinMap.cpp:(.text._ZN2cv6StringaSERKS0_[_ZN2cv6StringaSERKS0_]+0x28): undefined reference to `cv::String::deallocate()'

CMakeFiles/joinMap.dir/joinMap.o: In function `cv::Mat::Mat(cv::Mat const&)':

joinMap.cpp:(.text._ZN2cv3MatC2ERKS0_[_ZN2cv3MatC5ERKS0_]+0x188): undefined reference to `cv::Mat::copySize(cv::Mat const&)'

CMakeFiles/joinMap.dir/joinMap.o: In function `cv::Mat::~Mat()':

joinMap.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x39): undefined reference to `cv::fastFree(void*)'

CMakeFiles/joinMap.dir/joinMap.o: In function `cv::Mat::release()':

joinMap.cpp:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x4b): undefined reference to `cv::Mat::deallocate()'

CMakeFiles/joinMap.dir/joinMap.o: In function `cv::String::String(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':

joinMap.cpp:(.text._ZN2cv6StringC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN2cv6StringC5ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x5d): undefined reference to `cv::String::allocate(unsigned long)'

CMakeFiles/joinMap.dir/joinMap.o: In function `std::make_unsigned<long>::type fmt::v8::detail::to_unsigned<long>(long)':

joinMap.cpp:(.text._ZN3fmt2v86detail11to_unsignedIlEENSt13make_unsignedIT_E4typeES4_[_ZN3fmt2v86detail11to_unsignedIlEENSt13make_unsignedIT_E4typeES4_]+0x21): undefined reference to `fmt::v8::detail::assert_fail(char const*, int, char const*)'

CMakeFiles/joinMap.dir/joinMap.o: In function `std::make_unsigned<int>::type fmt::v8::detail::to_unsigned<int>(int)':

joinMap.cpp:(.text._ZN3fmt2v86detail11to_unsignedIiEENSt13make_unsignedIT_E4typeES4_[_ZN3fmt2v86detail11to_unsignedIiEENSt13make_unsignedIT_E4typeES4_]+0x1f): undefined reference to `fmt::v8::detail::assert_fail(char const*, int, char const*)'

CMakeFiles/joinMap.dir/joinMap.o: In function `fmt::v8::format_error::format_error(char const*)':

joinMap.cpp:(.text._ZN3fmt2v812format_errorC2EPKc[_ZN3fmt2v812format_errorC5EPKc]+0x26): undefined reference to `vtable for fmt::v8::format_error'

CMakeFiles/joinMap.dir/joinMap.o: In function `fmt::v8::detail::throw_format_error(char const*)':

joinMap.cpp:(.text._ZN3fmt2v86detail18throw_format_errorEPKc[_ZN3fmt2v86detail18throw_format_errorEPKc]+0x25): undefined reference to `fmt::v8::format_error::~format_error()'

joinMap.cpp:(.text._ZN3fmt2v86detail18throw_format_errorEPKc[_ZN3fmt2v86detail18throw_format_errorEPKc]+0x2c): undefined reference to `typeinfo for fmt::v8::format_error'

CMakeFiles/joinMap.dir/joinMap.o: In function `Sophus::SO3Base<Sophus::SO3<double, 0> >::normalize()':

joinMap.cpp:(.text._ZN6Sophus7SO3BaseINS_3SO3IdLi0EEEE9normalizeEv[_ZN6Sophus7SO3BaseINS_3SO3IdLi0EEEE9normalizeEv]+0x13a): undefined reference to `fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)'

joinMap.cpp:(.text._ZN6Sophus7SO3BaseINS_3SO3IdLi0EEEE9normalizeEv[_ZN6Sophus7SO3BaseINS_3SO3IdLi0EEEE9normalizeEv]+0x1a0): undefined reference to `fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)'

CMakeFiles/joinMap.dir/joinMap.o: In function `fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler>::on_error(char const*)':

joinMap.cpp:(.text._ZN3fmt2v826basic_format_parse_contextIcNS0_6detail13error_handlerEE8on_errorEPKc[_ZN3fmt2v826basic_format_parse_contextIcNS0_6detail13error_handlerEE8on_errorEPKc]+0x5): undefined reference to `fmt::v8::detail::error_handler::on_error(char const*)'

CMakeFiles/joinMap.dir/joinMap.o: In function `char const* fmt::v8::detail::parse_align<char, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&>(char const*, char const*, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&)':

joinMap.cpp:(.text._ZN3fmt2v86detail11parse_alignIcRNS1_13specs_checkerINS1_21dynamic_specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEEEEEEEEPKT_SD_SD_OT0_[_ZN3fmt2v86detail11parse_alignIcRNS1_13specs_checkerINS1_21dynamic_specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEEEEEEEEPKT_SD_SD_OT0_]+0x7d): undefined reference to `fmt::v8::detail::assert_fail(char const*, int, char const*)'

CMakeFiles/joinMap.dir/joinMap.o: In function `int fmt::v8::detail::parse_nonnegative_int<char>(char const*&, char const*, int)':

joinMap.cpp:(.text._ZN3fmt2v86detail21parse_nonnegative_intIcEEiRPKT_S5_i[_ZN3fmt2v86detail21parse_nonnegative_intIcEEiRPKT_S5_i]+0x39): undefined reference to `fmt::v8::detail::assert_fail(char const*, int, char const*)'

CMakeFiles/joinMap.dir/joinMap.o: In function `char const* fmt::v8::detail::parse_width<char, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&>(char const*, char const*, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&)':

joinMap.cpp:(.text._ZN3fmt2v86detail11parse_widthIcRNS1_13specs_checkerINS1_21dynamic_specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEEEEEEEEPKT_SD_SD_OT0_[_ZN3fmt2v86detail11parse_widthIcRNS1_13specs_checkerINS1_21dynamic_specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEEEEEEEEPKT_SD_SD_OT0_]+0x70): undefined reference to `fmt::v8::detail::assert_fail(char const*, int, char const*)'

CMakeFiles/joinMap.dir/joinMap.o: In function `void fmt::v8::detail::check_string_type_spec<char, fmt::v8::detail::error_handler&>(char, fmt::v8::detail::error_handler&)':

joinMap.cpp:(.text._ZN3fmt2v86detail22check_string_type_specIcRNS1_13error_handlerEEEvT_OT0_[_ZN3fmt2v86detail22check_string_type_specIcRNS1_13error_handlerEEEvT_OT0_]+0x22): undefined reference to `fmt::v8::detail::error_handler::on_error(char const*)'

CMakeFiles/joinMap.dir/joinMap.o: In function `void fmt::v8::detail::format_value<char, Eigen::Transpose<Eigen::Matrix<double, 4, 1, 0, 4, 1> > >(fmt::v8::detail::buffer<char>&, Eigen::Transpose<Eigen::Matrix<double, 4, 1, 0, 4, 1> > const&, fmt::v8::detail::locale_ref)':

joinMap.cpp:(.text._ZN3fmt2v86detail12format_valueIcN5Eigen9TransposeINS3_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEEEEvRNS1_6bufferIT_EERKT0_NS1_10locale_refE[_ZN3fmt2v86detail12format_valueIcN5Eigen9TransposeINS3_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEEEEvRNS1_6bufferIT_EERKT0_NS1_10locale_refE]+0x8a): undefined reference to `std::locale fmt::v8::detail::locale_ref::get<std::locale>() const'

CMakeFiles/joinMap.dir/joinMap.o: In function `char const* fmt::v8::detail::do_parse_arg_id<char, fmt::v8::detail::parse_width<char, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&>(char const*, char const*, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&)::width_adapter&>(char const*, char const*, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&)':

joinMap.cpp:(.text._ZN3fmt2v86detail15do_parse_arg_idIcRZNS1_11parse_widthIcRNS1_13specs_checkerINS1_21dynamic_specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEEEEEEEEPKT_SE_SE_OT0_E13width_adapterEESE_SE_SE_SG_[_ZN3fmt2v86detail15do_parse_arg_idIcRZNS1_11parse_widthIcRNS1_13specs_checkerINS1_21dynamic_specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEEEEEEEEPKT_SE_SE_OT0_E13width_adapterEESE_SE_SE_SG_]+0xb5): undefined reference to `fmt::v8::detail::assert_fail(char const*, int, char const*)'

CMakeFiles/joinMap.dir/joinMap.o: In function `char const* fmt::v8::detail::do_parse_arg_id<char, fmt::v8::detail::parse_precision<char, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&>(char const*, char const*, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&)::precision_adapter&>(char const*, char const*, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&)':

joinMap.cpp:(.text._ZN3fmt2v86detail15do_parse_arg_idIcRZNS1_15parse_precisionIcRNS1_13specs_checkerINS1_21dynamic_specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEEEEEEEEPKT_SE_SE_OT0_E17precision_adapterEESE_SE_SE_SG_[_ZN3fmt2v86detail15do_parse_arg_idIcRZNS1_15parse_precisionIcRNS1_13specs_checkerINS1_21dynamic_specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEEEEEEEEPKT_SE_SE_OT0_E17precision_adapterEESE_SE_SE_SG_]+0xb5): undefined reference to `fmt::v8::detail::assert_fail(char const*, int, char const*)'

CMakeFiles/joinMap.dir/joinMap.o: In function `int fmt::v8::detail::get_dynamic_spec<fmt::v8::detail::width_checker, fmt::v8::basic_format_arg<fmt::v8::basic_format_context<fmt::v8::appender, char> >, fmt::v8::detail::error_handler>(fmt::v8::basic_format_arg<fmt::v8::basic_format_context<fmt::v8::appender, char> >, fmt::v8::detail::error_handler)':

joinMap.cpp:(.text._ZN3fmt2v86detail16get_dynamic_specINS1_13width_checkerENS0_16basic_format_argINS0_20basic_format_contextINS0_8appenderEcEEEENS1_13error_handlerEEEiT0_T1_[_ZN3fmt2v86detail16get_dynamic_specINS1_13width_checkerENS0_16basic_format_argINS0_20basic_format_contextINS0_8appenderEcEEEENS1_13error_handlerEEEiT0_T1_]+0x27e): undefined reference to `fmt::v8::detail::error_handler::on_error(char const*)'

CMakeFiles/joinMap.dir/joinMap.o: In function `int fmt::v8::detail::get_dynamic_spec<fmt::v8::detail::precision_checker, fmt::v8::basic_format_arg<fmt::v8::basic_format_context<fmt::v8::appender, char> >, fmt::v8::detail::error_handler>(fmt::v8::basic_format_arg<fmt::v8::basic_format_context<fmt::v8::appender, char> >, fmt::v8::detail::error_handler)':

joinMap.cpp:(.text._ZN3fmt2v86detail16get_dynamic_specINS1_17precision_checkerENS0_16basic_format_argINS0_20basic_format_contextINS0_8appenderEcEEEENS1_13error_handlerEEEiT0_T1_[_ZN3fmt2v86detail16get_dynamic_specINS1_17precision_checkerENS0_16basic_format_argINS0_20basic_format_contextINS0_8appenderEcEEEENS1_13error_handlerEEEiT0_T1_]+0x27e): undefined reference to `fmt::v8::detail::error_handler::on_error(char const*)'

CMakeFiles/joinMap.dir/joinMap.o: In function `void fmt::v8::detail::check_string_type_spec<char, fmt::v8::detail::error_handler>(char, fmt::v8::detail::error_handler&&)':

joinMap.cpp:(.text._ZN3fmt2v86detail22check_string_type_specIcNS1_13error_handlerEEEvT_OT0_[_ZN3fmt2v86detail22check_string_type_specIcNS1_13error_handlerEEEvT_OT0_]+0x22): undefined reference to `fmt::v8::detail::error_handler::on_error(char const*)'

CMakeFiles/joinMap.dir/joinMap.o: In function `unsigned long long fmt::v8::detail::width_checker<fmt::v8::detail::error_handler>::operator()<int, 0>(int)':

joinMap.cpp:(.text._ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIiLi0EEEyT_[_ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIiLi0EEEyT_]+0x2f): undefined reference to `fmt::v8::detail::error_handler::on_error(char const*)'

CMakeFiles/joinMap.dir/joinMap.o: In function `unsigned long long fmt::v8::detail::width_checker<fmt::v8::detail::error_handler>::operator()<unsigned int, 0>(unsigned int)':

joinMap.cpp:(.text._ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIjLi0EEEyT_[_ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIjLi0EEEyT_]+0x2f): undefined reference to `fmt::v8::detail::error_handler::on_error(char const*)'

CMakeFiles/joinMap.dir/joinMap.o:joinMap.cpp:(.text._ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIxLi0EEEyT_[_ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIxLi0EEEyT_]+0x32): more undefined references to `fmt::v8::detail::error_handler::on_error(char const*)' follow

CMakeFiles/joinMap.dir/joinMap.o: In function `fmt::v8::appender fmt::v8::detail::write_padded<(fmt::v8::align::type)1, fmt::v8::appender, char, fmt::v8::detail::write<char, fmt::v8::appender>(fmt::v8::appender, fmt::v8::basic_string_view<char>, fmt::v8::basic_format_specs<char> const&)::{lambda(fmt::v8::appender)#1}>(fmt::v8::appender, fmt::v8::basic_format_specs<char> const&, unsigned long, unsigned long, fmt::v8::detail::write<char, fmt::v8::appender>(fmt::v8::appender, fmt::v8::basic_string_view<char>, fmt::v8::basic_format_specs<char> const&)::{lambda(fmt::v8::appender)#1}&&)':

joinMap.cpp:(.text._ZN3fmt2v86detail12write_paddedILNS0_5align4typeE1ENS0_8appenderEcZNS1_5writeIcS5_EET0_S7_NS0_17basic_string_viewIT_EERKNS0_18basic_format_specsIS9_EEEUlS5_E_EES7_S7_RKNSB_IT1_EEmmOT2_[_ZN3fmt2v86detail12write_paddedILNS0_5align4typeE1ENS0_8appenderEcZNS1_5writeIcS5_EET0_S7_NS0_17basic_string_viewIT_EERKNS0_18basic_format_specsIS9_EEEUlS5_E_EES7_S7_RKNSB_IT1_EEmmOT2_]+0x59): undefined reference to `fmt::v8::detail::basic_data<void>::left_padding_shifts'

collect2: error: ld returned 1 exit status

CMakeFiles/joinMap.dir/build.make:127: recipe for target 'joinMap' failed

make[2]: *** [joinMap] Error 1

CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/joinMap.dir/all' failed

make[1]: *** [CMakeFiles/joinMap.dir/all] Error 2

Makefile:83: recipe for target 'all' failed

make: *** [all] Error 2

产生这个错误的原因是你的cmakelists文件没有写完整:

CMakeLists文件如下:

project(rgbd)

cmake_minimum_required(VERSION 3.10)

find_package(Sophus REQUIRED)

add_executable(joinMap joinMap.cpp)

include_directories(${Sophus_INCLUDE_DIRS})

#链接OpenCV库

find_package(OpenCV REQUIRED)

#添加头文件

include_directories( ${OpenCV-INCLUDE_DIRS})

target_link_libraries(joinMap ${OpenCV_LIBS} ${Pangolin_LIBRARIES})


find_package(Pangolin REQUIRED)


target_link_libraries(joinMap ${OpenCV_LIBS} ${Pangolin_LIBRARIES})


# Eigen

include_directories("/usr/local/include/eigen3")

target_link_libraries(joinMap ${Sophus_LIBRARIES} fmt)


#链接c++11

set(CMAKE_CXX_FLAGS "-std=c++11") 

error2:

转换图像中: 1

转换图像中: 2

转换图像中: 3

转换图像中: 4

转换图像中: 5

点云共有0个点.

Point cloud is empty!

 

这个错误主要是你的c++代码里面的相关路径没有修改:

把它改为你自己的路径,进入rgbd文件夹下,Ctrl+L复制就可以了!!!

多加一个   .   改一下路径就OK了!!

具体的代码如下:

#include <iostream>

#include <fstream>

#include <opencv2/opencv.hpp>

#include <boost/format.hpp>  // for formating strings

#include <sophus/se3.hpp>

#include <pangolin/pangolin.h>



using namespace std;

typedef vector<Sophus::SE3d, Eigen::aligned_allocator<Sophus::SE3d>> TrajectoryType;

typedef Eigen::Matrix<double, 6, 1> Vector6d;



// 在pangolin中画图,已写好,无需调整

void showPointCloud(

    const vector<Vector6d, Eigen::aligned_allocator<Vector6d>> &pointcloud);



int main(int argc, char **argv) {

    vector<cv::Mat> colorImgs, depthImgs;    // 彩色图和深度图

    TrajectoryType poses;         // 相机位姿



    ifstream fin("/home/liqiang/Desktop/slambook2/ch5/rgbd/pose.txt");

    if (!fin) {

        cerr << "请在有pose.txt的目录下运行此程序" << endl;

        return 1;

    }



    for (int i = 0; i < 5; i++) {

        boost::format fmt("../%s/%d.%s"); //图像文件格式

        colorImgs.push_back(cv::imread((fmt % "color" % (i + 1) % "png").str()));

        depthImgs.push_back(cv::imread((fmt % "depth" % (i + 1) % "pgm").str(), -1)); // 使用-1读取原始图像



        double data[7] = {0};

        for (auto &d:data)

            fin >> d;

        Sophus::SE3d pose(Eigen::Quaterniond(data[6], data[3], data[4], data[5]),

                          Eigen::Vector3d(data[0], data[1], data[2]));

        poses.push_back(pose);

    }



    // 计算点云并拼接

    // 相机内参

    double cx = 325.5;

    double cy = 253.5;

    double fx = 518.0;

    double fy = 519.0;

    double depthScale = 1000.0;

    vector<Vector6d, Eigen::aligned_allocator<Vector6d>> pointcloud;

    pointcloud.reserve(1000000);



    for (int i = 0; i < 5; i++) {

        cout << "转换图像中: " << i + 1 << endl;

        cv::Mat color = colorImgs[i];

        cv::Mat depth = depthImgs[i];

        Sophus::SE3d T = poses[i];

        for (int v = 0; v < color.rows; v++)

            for (int u = 0; u < color.cols; u++) {

                unsigned int d = depth.ptr<unsigned short>(v)[u]; // 深度值

                if (d == 0) continue; // 为0表示没有测量到

                Eigen::Vector3d point;

                point[2] = double(d) / depthScale;

                point[0] = (u - cx) * point[2] / fx;

                point[1] = (v - cy) * point[2] / fy;

                Eigen::Vector3d pointWorld = T * point;



                Vector6d p;

                p.head<3>() = pointWorld;

                p[5] = color.data[v * color.step + u * color.channels()];   // blue

                p[4] = color.data[v * color.step + u * color.channels() + 1]; // green

                p[3] = color.data[v * color.step + u * color.channels() + 2]; // red

                pointcloud.push_back(p);

            }

    }



    cout << "点云共有" << pointcloud.size() << "个点." << endl;

    showPointCloud(pointcloud);

    return 0;

}



void showPointCloud(const vector<Vector6d, Eigen::aligned_allocator<Vector6d>> &pointcloud) {



    if (pointcloud.empty()) {

        cerr << "Point cloud is empty!" << endl;

        return;

    }



    pangolin::CreateWindowAndBind("Point Cloud Viewer", 1024, 768);

    glEnable(GL_DEPTH_TEST);

    glEnable(GL_BLEND);

    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);



    pangolin::OpenGlRenderState s_cam(

        pangolin::ProjectionMatrix(1024, 768, 500, 500, 512, 389, 0.1, 1000),

        pangolin::ModelViewLookAt(0, -0.1, -1.8, 0, 0, 0, 0.0, -1.0, 0.0)

    );



    pangolin::View &d_cam = pangolin::CreateDisplay()

        .SetBounds(0.0, 1.0, pangolin::Attach::Pix(175), 1.0, -1024.0f / 768.0f)

        .SetHandler(new pangolin::Handler3D(s_cam));



    while (pangolin::ShouldQuit() == false) {

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);



        d_cam.Activate(s_cam);

        glClearColor(1.0f, 1.0f, 1.0f, 1.0f);



        glPointSize(2);

        glBegin(GL_POINTS);

        for (auto &p: pointcloud) {

            glColor3d(p[3] / 255.0, p[4] / 255.0, p[5] / 255.0);

            glVertex3d(p[0], p[1], p[2]);

        }

        glEnd();

        pangolin::FinishFrame();

        usleep(5000);   // sleep 5 ms

    }

    return;

}

Ubuntu20.04的执行效果如下:

 

Ubuntu18.04的执行效果如下:

PS:前面我有些图有的是20.04截图的,有的是18.04截图的,两个版本错误原理都是一样 的,所以我就没细分!!!!

  • 19
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长沙有肥鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值