ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-03-29 20:00:30  阅读:425  来源: 互联网

标签:set opencv3 SLAM14 OpenCV 报错 usr ch8 local dev


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有