《视觉十四讲》例程运行记录(5)——运行ch8视觉里程计2光流法和直接法的实践例程

发布于:2024-05-09 ⋅ 阅读:(27) ⋅ 点赞:(0)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


**

一、运行ch8的例程代码

1. 编译例程代码前的修改

修改optical_flow.cpp和direct_method.cpp文件中图片的路径
(1) 修改光流法图像的路径

string file 1 ="../LK1.png";        // 第一张图片路径
string file 2 ="../LK2.png";        // 第二张图片的路径

(2) 修改直接法图像的路径

string left file ="../left.png";
string disparity file ="../disparity.png";
boost::format fmt others("../%06d.png");       //   其他图片

(3) 修改CMakeLists.txt
每个target_link_libraries后面加上fmt,用于连接fmt库,如下:

在这里插入图片描述

2. 编译例程

(1) 在slambook2/ch8/目录下,创建build文件:

mkdir build
cd build

(2) 编译源码

cmake ..
make

注意:make编译时可能会出错,后面有解决的方法

(3) 运行例程

光流法的例程:

 ./optical_flow  

直接法的例程:

./direct_method

3. 编译报错

(1) 报错一:使用cmake … 编译时出现

报错信息如下:

Make Error at CMakeLists.txt:38(find package):By not providing
“FindG20.cmake” in CMAKE_MODULE_PATH this project has asked CMake to
find a package configuration file provided by “G2o”, but CMake did not
find one. Could not find a package configuratton file provided by
“g20” with any of the following names: G2oConfig.cmakeg
g2o-config.cmake

在这里插入图片描述
解决:
找到findg2o.cmake文件的位置,一般在g2o安装包中的"cmake_modules"文件夹中,将整个文件夹复制到相应工程的下面,与build文件夹在同一目录,然后编译可以正常通过。

(2) 报错二:make编译时出现

报错信息如下:

在这里插入图片描述

原因:
可能opencv3.2.0版本太低导致

解决:
安装更高的版本,如:opencv4.5.2(如果是ubuntu20的自带高版本的opencv,不会出现此问题)

(3) 报错三:make编译时出现

error: ’ CV GRAY2BGR’ was not declared in this scope
cv::cvtcolor(img2,img2 show,CV GRAY2BGR);

在这里插入图片描述
原因:
这个实验由于代码使用的是opencv2,而cmkelists.txt文件中是opencv4(error: ‘CV_GRAY2BGR’ was not declared in this scope)这是opencv2的用法,现在opencv3和4是COLOR_GARY2BG

解决办法:
1) 在光流的代码optical_flow.cpp文件中:
需要将CV_GRAY2BGR,更新为COLOR_GRAY2BGR。

2) 在direct_method.cpp文件中
CV_GRAY2BGR 替换为 cv::COLOR_GRAY2BGR,

最后重新编译ch8的代码,终端输入如下代码,即看到运行结果:

./optical_flow  
./direct_method