照相机模型与增强现实
一.以平面和标志物进行姿态估计
首先,本次实验需要下载(1)openGL:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl;(2)pygame:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame(具体步骤参考网络)
1.实验代码如下:
实验结果如下图:
使用平面物体作为标记物,来计算用于新视图投影矩阵的例子。将图像的特征和对齐后的标记匹配,计算出单应性矩阵,然后用于计算照相机的姿态。第一张图是一个带有蓝色正方形区域的模板图像(书本正面照)。第二张图是从某个角度拍摄的另一张书本图像,其中的蓝色正方形区域对应了第一张图的区域。第三张图是使用计算出的照相机矩阵变换立方体的结果。
二.综合集成
实验代码如下所示:
实验结果如下:
增强现实,使用由特征匹配计算出的照相机参数,将一个计算机图形学模型放置在场景中的书本:将茶壶按照和坐标轴对齐的方式显示出来,进行合理性验证,查看原点的位置。
三.实验遇到的问题
问题1:OpenGL.error.NullFunctionError: Attempt to call an undefined function glutInitDisplayMode…
解决方法:该问题的主要原因是我们的机器大部分都是64位的,但是通过pip install opengl 安装的版本默认为32位的,所以需要下载64位
问题2:freeglut ERROR: Function called without first calling ‘glutInit’.
解决方法:这个错误是freeglut和glut共存的缘故,它们俩定义了相同的方法,这个是动态链接库的重叠问题,将Anaconda2\Lib\site-packages\OpenGL\DLLS文件夹里面的freeglut64.vc9.dll删掉就行了。