视觉SLAM14讲ch8报错问题的解决(第二版)

视觉SLAM14讲ch8报错问题的解决(第二版)

0.问题描述

在运行ch8实践部分代码时遇到了下面的错误:
std::bind(&OpticalFlowTracker::calculateOpticalFlow, &tracker, placeholders::_1));

std::bind(&JacobianAccumulator::accumulate_jacobian, &jaco_accu, std::placeholders::1));

CV_EXPORTS void parallel_for
(const Range& range, const ParallelLoopBody& body, double nstripes=-1.);

在这里插入图片描述

1.解决办法

从CMakeLists.txt中可以看到,这里的程序需要用到opencv3,参考了多篇博文也没找到很好的办法,索性就重装了一遍opencv3(虽然电脑上已经装过),重装完成后,问题成功解决了,我使用直接下载安装包安装,没有使用apt-get安装,这里就把重装过程和一些改动介绍一下:

1)首先再安装一下依赖项

即使装过也可以重新装一遍,看看有没有缺什么依赖项。

sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev libtbb-dev

2)下载opencv

下载链接:https://www.bzblog.online/wordpress/index.php/2020/03/09/opencvdownload/
下载相应版本的XXX.tar.gz文件即可,博主自己下载的是opencv-3.4.1.tar.gz。

3)安装opencv

先解压,然后将文件夹在终端打开,按照下面步骤安装:

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3 ..
make -j4
sudo make install

完成上述步骤之后,opencv3就被安装在了/usr/local/opencv3文件夹下,你也可以自定义文件夹,只需要在cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3 ..修改文件夹地址即可。

4)修改CMakeLists.txt

在文件中添加set(OpenCV_DIR "/usr/local/opencv3/share/OpenCV")即可,修改之后如下:

cmake_minimum_required(VERSION 2.8)
project(ch8)

set(CMAKE_BUILD_TYPE "Release")
add_definitions("-DENABLE_SSE")
set(CMAKE_CXX_FLAGS "-std=c++11 ${SSE_FLAGS} -g -O3 -march=native")

set(OpenCV_DIR "/usr/local/opencv3/share/OpenCV")

find_package(OpenCV 3 REQUIRED)
find_package(Sophus REQUIRED)
find_package(Pangolin REQUIRED)

include_directories(
        ${OpenCV_INCLUDE_DIRS}
        ${G2O_INCLUDE_DIRS}
        ${Sophus_INCLUDE_DIRS}
        "/usr/local/include/eigen3"
        ${Pangolin_INCLUDE_DIRS}
)

add_executable(optical_flow optical_flow.cpp)
target_link_libraries(optical_flow ${OpenCV_LIBS})

add_executable(direct_method direct_method.cpp)
target_link_libraries(direct_method ${OpenCV_LIBS} ${Pangolin_LIBRARIES})

如果是自己自定义的文件夹,只需要set(OpenCV_DIR "**/usr/local/opencv3**/share/OpenCV")将加粗部分改成自己的文件夹。

2.其他解决办法

也可以安装opencv4,然后将CV_GRAY2BGR改为COLOR_GRAY2BGR,在CMakeLists.txt中添加set(OpenCV_DIR "/usr/local/opencv4/lib/cmake/opencv4") find_package(OpenCV 4 REQUIRED),但是这样只会让optical_flow.cpp不报错,另一个依旧会报错。
参考链接:(https://blog.csdn.net/weixin_44684139/article/details/104837210)

3.总结

若是遇到这种报错,极有可能是opencv3没有安装好,可尝试重新安装opencv3,可以不用卸载原先的opencv,只要安装位置不同就可以。

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
视觉SLAM14》第13主要介绍了多视图几何(Multi-view Geometry)在视觉SLAM中的重要性和应用。本章内容包括三维重建、相机姿态估计、稠密地图构建、三维点云的优化等方面。 首先,介绍了三维重建的基本概念和方法。通过多视图之间的特征匹配和三角化,可以获取相机位置和场景的三维结构。其中使用了基础矩阵、本质矩阵和投影矩阵等几何工具进行相机位置估计。 其次,解了相机姿态估计的原理和方法。通过将特征点在不同视角中的投影进行匹配,可以计算得到相机之间的位姿变化。常用的方法包括通过两帧图像的本质矩阵或单应性矩阵来进行计算。 然后,述了稠密地图构建的过程。通过对特征点云进一步处理,可以得到更加丰富的场景信息。常用的方法有基于三维重建的稠密地图构建和基于场景几何关系的稠密地图构建等。 最后,介绍了三维点云的优化方法。从视觉SLAM系统的角度出发,通过优化相机的位姿和特征点的三维位置,提高系统的准确性和鲁棒性。常用的方法有基于图优化的方法和基于束优化的方法等。 综上所述,《视觉SLAM14》第13详细介绍了多视图几何在视觉SLAM中的关键技术和应用。可以通过多视图的特征匹配和三角化,实现三维重建和相机姿态估计。同时,通过稠密地图构建和三维点云的优化,提高系统的精度和鲁棒性。这些技术对于实现高效的视觉SLAM系统具有重要意义。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值