照相机模型与增强现实
1. 使用增强现实之前的准备
在学习计算机视觉中的照相机模型和增强现实时,若是使用python,则需要先安装两个库。
1、pygame:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame
2、openGL:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl
根据自己的python版本下载相应的文件,例如:我的python是3.7.2版本,我的系统是64位,所以我需要下载文件名里有cp37m-win amd64的文件。
下载好了以后,在两个文件所在的目录下安装。在文件所在目录,利用shift+鼠标右键,打开powershell窗口,输入pip install 文件名。
例如安装pygame:pip install pygame-1.9.4-cp37-cp37m-win_amd64.whl
openGL类似。
在运行第二端代码的
遇到这个问题,说明freeglut和glut定义了相同的方法,使得动态链接库重叠。所以在这里的解决方法。就是删掉freeglut就行了。
文件位置如下:D:\Python37\Lib\site-packages\OpenGL\DLLS
在该位置删掉freeglut64.vc9.dll文件
2、进行试验
1、对平面和标记物进行姿态估计
如果图像中包含了平面状的标记物体,并且已经对照相机进行了标定,那么我们就可以加算出照相机的姿态。首先我们要限拍两张图片,并提取两张图像的SIFT特征,然后使用RANSAC算法稳健地估计单应性矩阵。
得到单应性矩阵。该单应性矩阵将一幅图像中标记物上的点映射到另一幅图像的对应点。然后定义相应的三维坐标系。
先拍摄两张图像。将名字改掉,在代码中实现。
from pylab import *
from PIL import Image
# If you have PCV installed, these imports should work
from PCV.geometry import homography, camera
from PCV.localdescriptors import sift
"""
This is the augmented reality and pose estimation cube example from Section 4.3.
"""
def cube_points(c, wid):
""" Creates a list of points for plotting
a cube with plot. (the first 5 points are
the bottom square, some sides repeated). """
p = []
# bottom
p.append([c[0]-wid, c[1]-wid, c[2]-wid])
p.append([c[0]-wid, c[1]+wid, c[2]-wid])
p.append([c[0]+wid, c[1]+wid, c[2]-wid])