概要

PinholeCameraIntrinsic class stores intrinsic camera matrix, and image height and width.
Open3D的PinholeCameraIntrinsic类存储相机的内参、图像的宽高。
详细用法请查看帮助文件Open3D 0.19.0 documentation

构造函数

其中__init__(*args, **kwargs)为构造函数,*args, **kwargs代表其支持函数重载。
方式如下:
1、默认构造 :init(self: open3d.camera.PinholeCameraIntrinsic) -> None,不返回值。

# 默认结构
intrinsic = open3d.camera.PinholeCameraIntrinsic()

2、拷贝构造:
init(self: open3d.camera.PinholeCameraIntrinsic, arg0: open3d.camera.PinholeCameraIntrinsic) -> None
Parameters:
    arg0 (open3d.camera.PinholeCameraIntrinsic) –
复制已有内参,arg0 来源于另一个PinholeCameraIntrinsic的对象

# 复制已有的内参
intrinsic_copy = open3d.camera.PinholeCameraIntrinsic(intrinsic)  

3、内参矩阵构造:
init(self: open3d.camera.PinholeCameraIntrinsic,
    width: int, height: int,
    intrinsic_matrix: numpy.ndarray[numpy.float64[3, 3]]) -> None

import numpy as np

K = np.array([[fx, 0, cx],
              [0, fy, cy],
              [0,  0,  1]])  # 相机内参矩阵
intrinsic = open3d.camera.PinholeCameraIntrinsic(640, 480, K)  # 通过矩阵创建
# 图像宽、图像高、3*3矩阵。

4、直接输入相机参数:
init(self: open3d.camera.PinholeCameraIntrinsic,
     width: int, height: int,
     fx: float, fy: float, cx: float, cy: float) -> None

# 图像宽、图像高、fx,fy,cx,cy
intrinsic = open3d.camera.PinholeCameraIntrinsic(640, 480, 525.0, 525.0, 320.0, 240.0)

5、利用预设的参数:
init(self: open3d.camera.PinholeCameraIntrinsic,
   param: open3d.camera.PinholeCameraIntrinsicParameters) -> None
利用默认参数进行函数的构造。

# 直接使用默认参数
param = open3d.camera.PinholeCameraIntrinsicParameters.PrimeSenseDefault
intrinsic = open3d.camera.PinholeCameraIntrinsic(param)  

方法

get*

1、获取参数焦距fx,fy
get_focal_length(self: open3d.camera.PinholeCameraIntrinsic) → tuple[float, float]

# 获取焦距参数
fx, fy = intrinsic.get_focal_length()

2、获取图像中心cx,cy(一般情况下就是图像中心)
get_principal_point(self: open3d.camera.PinholeCameraIntrinsic) → tuple[float, float]

# 获取图像中心
cx, cy = intrinsic.get_principal_point()

3、斜切skew
get_skew(self: open3d.camera.PinholeCameraIntrinsic) → float
斜切skew的概念不在此赘述了,其使用方式为:

# 获取斜切
skew = intrinsic.get_skew()

4、检查当前参数是否有效
is_valid(self: open3d.camera.PinholeCameraIntrinsic) → bool

set*

1、修改参数
set_intrinsics(self: open3d.camera.PinholeCameraIntrinsic,
    width: int, height: int,
    fx: float, fy: float, cx: float, cy: float) → None

intrinsic.set_intrinsics(640, 480, 525.0, 525.0, 320.0, 240.0)

属性

原帮助文档按首字母排序,调整顺序如下:
1、property width
   图像宽度
   type:int;
2、property height
   图像高度
   type:int
3、property intrinsic_matrix
   内参矩阵
   [fx, 0, cx], [0, fy, cy], [0, 0, 1]]

小结

以前有个坏习惯,不太喜欢解析算子的帮助文档,用算子时总是去搜,没网了就不会用了。半路出家没有系统性学习带来的恶习,需要克服。

Logo

电影级数字人,免显卡端渲染SDK,十行代码即可调用,工业级demo免费开源下载!

更多推荐