1. 如何使用OpenCorr
OpenCorr面向的是具备一定C++程序开发基础的用户。这套程序开发库在微软Windows 10专业版上的Visual Studio 2019(VS2019 社区版)内开发和测试,目前开发环境已升级至Windows11专业版和VS2022,因此使用者需要掌握这一集成开发环境(Integrated development environment, IDE)的基本配置和使用技能。由于代码遵循ISO C++ 14标准开发,而且依赖的几个开源程序库也是类似的情况,因此OpenCorr可以在其它操作系统(诸如Linux或Unix)中或使用其它C++编译器(例如GCC)编译。GitHub项目的examples 目录下提供了一个CMake脚本的示例 CMakeLists.txt (https://github.com/vincentjzy/OpenCorr/examples/CMakeLists.txt) 供在Linux或Unix中开发的用户参考。
编译和运行OpenCorr的程序和范例首先需要正确安装以下四个开源程序库:
- Eigen 3.4.0(eigen.tuxfamily.org),用于二维矩阵的基本操作;
- OpenCV 4.6.0(opencv.org,用于图像的读写,2D图像特征提取和匹配;
- FFTW 3.3.5 (fftw.org),用来快速计算互相关判据;
- nanoflann (https://github.com/jlblancoc/nanoflann),用于快速估计点云中某一点的近邻点。
上述开发库大多在图像处理领域久负盛名,其官网提供非常详尽的指南和下载资源。在Windows 10系统上安装可以归纳为以下几个主要步骤:
(1)从官网上下载这些开发库的源代码(包括.h和.cpp等文件)以及相应的静态库(.lib文件)或动态库(.dll文件)。
(2)将这些文件放到合适的目录下,图1.1展示了我计算机上的目录结构,首先在VS 2019中创建一个名为OpenCorr的解决方案及同名的项目,OpenCor源代码的目录(OpenCor)与其它开发库的目录并列放在主目录(D:\OpenCorr\)下。
![](https://opencorr.org/wp-content/uploads/2024/02/vs_solution.jpg)
(3)在IDE中添加相应文件的路径,具体如图1.2所示,点击菜单 项目–>属性–>VC++目录,然后在“包含目录”里添加开发库源代码文件的目录,在“库目录”项里添加开发库静态库文件的目录。
![](https://opencorr.org/wp-content/uploads/2022/04/vs_directories-1024x525.png)
(4)设置链接器附加依赖项,打开 项目–>属性–>链接器–>输入–>附加依赖项对话框,如图1.3所示。
![](https://opencorr.org/wp-content/uploads/2024/02/vs_dependencies.jpg)
(5)将静态库文件(.lib)的文件名列表输入文本框后点击确定。对于Release模式,可以直接复制下面的列表粘贴至文本框。注意在Debug模式下,opencv库相应的文件名(不包括扩展名)以字母d结尾。
libfftw3-3.lib
libfftw3f-3.lib
libfftw3l-3.lib
opencv_world460.lib
(5)对于OpenCV和FFTW,还需要把动态链接库文件放到合适的目录下,可以放在编译代码产生的可执行程序(.exe文件)目录下,例如图1.1中的x64\Release。这些文件也可以放在操作系统Path参量包含的目录里(可通过Windows 10 设置–>关于–>高级系统设置–>高级–>环境变量–>系统变量–>Path 查看和修改)。
(6)如果希望使用多核CPU加速程序运行,还需要在项目属性中开启OpenMP支持,如图1.4所示。点击菜单 项目–>属性–>C/C++–>语言,将OpenMP支持设置为“是”。
![](https://opencorr.org/wp-content/uploads/2022/04/vs_openmp.png)
为了方便初学者配置开发环境,我们将一个完整的Visual Studio解决方案做成zip压缩包,放在opencorr.org供大家下载。将压缩包解开后(可使用7-Zip),直接用VS 2019或更高版本的Visual Studio打开OpenCorr.sln文件,即可开始调试代码。注意根据解压缩文件的目录正确设置IDE的路径,具体可参考上面的安装说明。
配置好开发环境,就可以尝试使用OpenCorr的模块制作DIC或DVC程序了。我们在GitHub项目的examples目录下提供了一些程序范例和图像,供使用者尝试。在编译这些程序前,同样需要正确设置IDE和代码内的文件路径。