双目三维重建—基于特征点匹配的被动式三维重建(OpenCV+OpenGL)

首先我们先来看一下三维重建的效果图:

这里特别感谢博主shiter的原创文章:OpenCV+OpenGL 双目立体视觉三维重建

本博文参考了该博主的的核心代码,并针对该博主博文中声明的一些BUG进行了修正:

本文代码下载地址(已修正相关问题问题):https://download.csdn.net/download/qq_15029743/10784389

本文主要从如何配置环境方面进行介绍,后期会更新基于摄像头实际抓图的三维重建

相机抓取的相片原图:

 

首先是本文的运行环境:Window 7 x64+OpenCV 2.4.10+VS 2013+OpenGL(GLUT)

首先你需要自行配置好OpenCV环境,这里就不再赘述了

OpenCV配置方法详细可以参考博主的博文:Open_cv 2.49+Windows 7(×64)+VS2013安装教程

不同之处在于我们采用的是2.4.10的OpenCV,导入附加依赖项如下(注意,OpenCV2.49也同样可以,只是需要将所有涉及到OpenCV 249的改成2410):

opencv_calib3d2410.lib
opencv_contrib2410.lib
opencv_core2410.lib
opencv_features2d2410.lib
opencv_flann2410.lib
opencv_gpu2410.lib
opencv_highgui2410.lib
opencv_imgproc2410.lib
opencv_legacy2410.lib
opencv_ml2410.lib
opencv_nonfree2410.lib
opencv_objdetect2410.lib
opencv_photo2410.lib
opencv_stitching2410.lib
opencv_ts2410.lib
opencv_video2410.lib
opencv_videostab2410.lib

 如果你的计算机配置完成OpenCV后出现如下提示:

双目三维重建—基于特征点匹配的被动式三维重建(OpenCV+OpenGL)_第1张图片

 请在系统变量下添加path路径,并重启后即可生效:

双目三维重建—基于特征点匹配的被动式三维重建(OpenCV+OpenGL)_第2张图片

如果提示缺少xxxx.LIB文件 ,大概率是opencv路径配置错误,请仔细检查路径并重新配置即可。

到这里就完成了OpenCV的基本配置,接下来进行OpenGl的配置,这里我们选择的是入门级的GLUT库,这里我们进行详细的介绍,首先我们要下载GLUT库:GLUT库(注:源码包中已包含该文件,无需重复下载)

解压库文件后,我们发现一共有五个文件,分别是:

双目三维重建—基于特征点匹配的被动式三维重建(OpenCV+OpenGL)_第3张图片

  • glut.dll 动态链接库
  • glut.h 头文件
  • glut.lib 库文件
  • glut32.dll 动态链接库
  • glut32.lib 库文件

Step1:我们把glut.h文件放到VS安装目录下的GL文件夹中,以博主的默认安装路径,应该放到:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\GL

注:如果没有GL文件夹请新建一个

Step2:将得到的glut.lib和glut32.lib复制到vs2013的lib文件夹下:vs2013\VC\lib,以博主的默认安装路径,应该放到:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib

双目三维重建—基于特征点匹配的被动式三维重建(OpenCV+OpenGL)_第4张图片

Step3:将glut.dll,glut32.dll复制到到操作系统目录下面的C:\Windows\SysWOW64或C:\Windows\system32文件夹内,以博主的默认安装路径,应该放到: 

C:\Windows\SysWOW64

双目三维重建—基于特征点匹配的被动式三维重建(OpenCV+OpenGL)_第5张图片

 好了,到这里所有的配置就完成了,点击VS运行即可实现基本功能了:

双目三维重建—基于特征点匹配的被动式三维重建(OpenCV+OpenGL)_第6张图片

 这里,程序中提供了两种重建方法,一种是基于特征点的,一种是基于稠密的,可以在程序中进行修改

双目三维重建—基于特征点匹配的被动式三维重建(OpenCV+OpenGL)_第7张图片

将下面的语句修改成对应模式即可切换算法:

Algorithm g_algo = FEATURE_PT;  //基于特征点
Algorithm g_algo = DENSE;       //稠密

其中稠密匹配方式速度快,但是通用性及重建效果不如基于特征点的匹配(尤其是深度变化较复杂的图片)

你可能感兴趣的:(机器视觉学习专栏)