python+opencv实现照相机模型以及增强现实

本文介绍了使用Python和OpenCV实现相机投影模型,通过针孔相机模型和内、外参数解释了3D图片投影。接着讲解了基于平面和标记物的姿态估计,展示了如何在图像上叠加3D立方体。在增强现实部分,探讨了PyOpenGL的安装与使用,以及解决安装过程中遇到的问题,最后展示了运行结果,包括立方体和茶壶的投影效果。
摘要由CSDN通过智能技术生成

一、在图片上实现3D图片投影

(一)相机投影模型

(1)针孔相机模型
在这里插入图片描述
在这里插入图片描述
首先定义坐标系:
(1)相机坐标系(三维)
在这个坐标系中,相机的中心为光心,以光心c为原点和坐标轴X,Y,Z组成了相机坐标系
(2)图片坐标系(二维)
在一个图像平面中,以平面的中心像主点P为原点和坐标轴x,y组成了图片坐标系。
这两个坐标系之间的线性变化为:
在这里插入图片描述
(2)内参数
内参数是指相机内部自带的,不受外界影响的参数,主要有焦距f和相机自带的误差
内参矩阵:
在这里插入图片描述
在这里插入图片描述
(3)外参数
主要是旋转、平移带来的参数变化
在这里插入图片描述
两类参数的联系
在这里插入图片描述

二、以平面和标记物进行姿态估计

(1)在一幅图像上叠加一个立方体
基本流程:
1.提取两幅图像的sift特征
2.用RANSAC算法估计单应性矩阵
3.在图像中投影成3D模型
前两个问题在之前的博客中都有详细的过程SIFT详解 RANSAC算法
现在重点解决第三个问题
原图如下:
在这里插入图片描述在这里插入图片描述
代码参考《Python计算机视觉》

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.
"""
import os
root=os.getcwd()+"\\"

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])
    p.append([c[0] + wid, c[1] - wid, c[2] - wid])
    p.append([c[0] - wid, c[1] - wid, c[2] - wid])  # same as
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值