双目三维重建—基于特征点匹配的被动式三维重建(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后出现如下提示:
请在系统变量下添加path路径,并重启后即可生效:
如果提示缺少xxxx.LIB文件 ,大概率是opencv路径配置错误,请仔细检查路径并重新配置即可。
到这里就完成了OpenCV的基本配置,接下来进行OpenGl的配置,这里我们选择的是入门级的GLUT库,这里我们进行详细的介绍,首先我们要下载GLUT库:GLUT库(注:源码包中已包含该文件,无需重复下载)
解压库文件后,我们发现一共有五个文件,分别是:
- 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
Step3:将glut.dll,glut32.dll复制到到操作系统目录下面的C:\Windows\SysWOW64或C:\Windows\system32文件夹内,以博主的默认安装路径,应该放到:
C:\Windows\SysWOW64
好了,到这里所有的配置就完成了,点击VS运行即可实现基本功能了:
这里,程序中提供了两种重建方法,一种是基于特征点的,一种是基于稠密的,可以在程序中进行修改
、
将下面的语句修改成对应模式即可切换算法:
Algorithm g_algo = FEATURE_PT; //基于特征点
Algorithm g_algo = DENSE; //稠密
其中稠密匹配方式速度快,但是通用性及重建效果不如基于特征点的匹配(尤其是深度变化较复杂的图片)