视觉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