没有合适的资源?快使用搜索试试~ 我知道了~
首页利用python实现AR教程
资源详情
资源评论
资源推荐

利用利用python实现实现AR教程教程
今天小编就为大家分享一篇利用python实现AR教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小
编过来看看吧
先了解如何利用python语言实现以平面和标记物进行姿态估计
本实验只是先实现一个简单的小例子。简单来说就是先识别出图像中的参考面,再拍摄一张目标图像,将参考面顶部的3D模
型投影到目标图像上。
大致步骤如下:大致步骤如下:
识别参考平面识别参考平面
在这一步中,我们所需要做的事就是提取参考图像和目标图像的sift特征,然后使用RANSAC算法稳健地估计单应性矩阵。
代码如下:
#计算特征
sift.process_image('D:输入图片/book_frontal.JPG', 'im0.sift')
l0, d0 = sift.read_features_from_file('im0.sift')
sift.process_image('D:输入图片/book_per.JPG', 'im1.sift')
l1, d1 = sift.read_features_from_file('im1.sift')
#匹配特征,并计算单应性矩阵
matches = sift.match_twosided(d0, d1)
ndx = matches.nonzero()[0]
fp = homography.make_homog(l0[ndx, :2].T)
ndx2 = [int(matches[i]) for i in ndx]
tp = homography.make_homog(l1[ndx2, :2].T)
model = homography.RansacModel()
H, inliers = homography.H_from_ransac(fp, tp, model)
由上面代码可得到单应性矩阵,它能够将一幅图像中标记物的点映射到另一幅图像中的对应点。还需要建立X-Y(Z=0)三维坐
标系,标记物在Z=0平面上,原点在标记物的某个位置上。
从单应性推导出从参考面坐标系到目标图像坐标系的转换
在进行坐标转换之前,为了检验单应性矩阵结果的正确性,需要将一些三维物体放置在目标图像上,本实验使用了一个立方
体。产生立方体的代码如下:
def cube_points(c, wid):
p = []
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])
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])
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])
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])
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])
p.append([c[0]+wid, c[1]-wid, c[2]+wid])
p.append([c[0]+wid, c[1]-wid, c[2]-wid]
return array(p).T
先计算出照相机的标定矩阵,就可以得出两个视图间的相对变换
代码如下:
#计算照相机标定矩阵,使用图像的分辨率为747*1000
K = my_calibration((747, 1000))
#位于边长为0.2,Z=0平面上的三维点
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0