其他分享
首页 > 其他分享> > 视觉SLAM14讲ch8报错问题的解决(第二版)

视觉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,只要安装位置不同就可以。

标签:set,opencv3,SLAM14,OpenCV,报错,usr,ch8,local,dev
来源: https://blog.csdn.net/qq_41873211/article/details/115306600