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\)下。

图1.1 Visual Studio解决方案目录结构的示例

(3)在IDE中添加相应文件的路径,具体如图1.2所示,点击菜单 项目–>属性–>VC++目录,然后在“包含目录”里添加开发库源代码文件的目录,在“库目录”项里添加开发库静态库文件的目录。

图1.2 Visual Studio内设置开发库目录示例

(4)设置链接器附加依赖项,打开 项目–>属性–>链接器–>输入–>附加依赖项对话框,如图1.3所示。

图1.3 Visual Studio内设置附加依赖项示例

(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支持设置为“是”。

图1.4 Visual Studio内设置OpenMP支持示例

为了方便初学者配置开发环境,我们将一个完整的Visual Studio解决方案做成zip压缩包,放在opencorr.org供大家下载。将压缩包解开后(可使用7-Zip),直接用VS 2019或更高版本的Visual Studio打开OpenCorr.sln文件,即可开始调试代码。注意根据解压缩文件的目录正确设置IDE的路径,具体可参考上面的安装说明。

配置好开发环境,就可以尝试使用OpenCorr的模块制作DIC或DVC程序了。我们在GitHub项目的examples目录下提供了一些程序范例和图像,供使用者尝试。在编译这些程序前,同样需要正确设置IDE和代码内的文件路径。