![]() |
OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
|
仿射变换。 更多...
#include <opencv2/core/affine.hpp>
公开类型 | |
| typedef T | float_type |
| typedef Matx< float_type, 3, 3 > | Mat3 |
| typedef Matx< float_type, 4, 4 > | Mat4 |
| typedef Vec< float_type, 3 > | Vec3 |
公开成员函数 | |
| Affine3 () | |
| 默认构造函数。表示一个 4x4 单位矩阵。 | |
| Affine3 (const float_type *vals) | |
| 从 16 元素数组创建。 | |
| Affine3 (const Mat &data, const Vec3 &t=Vec3::all(0)) | |
| Affine3 (const Mat3 &R, const Vec3 &t=Vec3::all(0)) | |
| Affine3 (const Mat4 &affine) | |
| 增广仿射矩阵。 | |
| Affine3 (const Vec3 &rvec, const Vec3 &t=Vec3::all(0)) | |
| template<typename Y > | |
| Affine3< Y > | cast () const |
| Affine3 | concatenate (const Affine3 &affine) const |
| a.concatenate(affine) 等同于 affine * a; | |
| Affine3 | inv (int method=cv::DECOMP_SVD) const |
| Mat3 | linear () const |
| void | linear (const Mat3 &L) |
| template<typename Y > | |
| operator Affine3< Y > () const | |
| Affine3 | rotate (const Mat3 &R) const |
| a.rotate(R) 等同于 Affine(R, 0) * a; | |
| Affine3 | rotate (const Vec3 &rvec) const |
| a.rotate(rvec) 等同于 Affine(rvec, 0) * a; | |
| Mat3 | rotation () const |
| void | rotation (const Mat &data) |
| void | rotation (const Mat3 &R) |
| void | rotation (const Vec3 &rvec) |
| Vec3 | rvec () const |
| Affine3 | translate (const Vec3 &t) const |
| a.translate(t) 等同于 Affine(E, t) * a,其中 E 是单位矩阵 | |
| Vec3 | translation () const |
| void | translation (const Vec3 &t) |
静态公开成员函数 | |
| static Affine3 | Identity () |
| 创建一个 4x4 单位变换。 | |
公开属性 | |
| Mat4 | matrix |
仿射变换。
它表示一个 4x4 齐次变换矩阵 \(T\)
\[T = \begin{bmatrix} R & t\\ 0 & 1\\ \end{bmatrix} \]
其中 \(R\) 是一个 3x3 旋转矩阵,\(t\) 是一个 3x1 平移向量。
你可以通过 3x3 旋转矩阵或 3x1 旋转向量来指定 \(R\),旋转向量通过 Rodrigues 公式转换为 3x3 旋转矩阵。
要构造一个表示先绕轴 \(r\) 进行旋转(旋转角度为 \(|r|\),单位为弧度,遵循右手定则),然后再进行向量 \(t\) 平移的矩阵 \(T\),可以使用
如果你已经有了旋转矩阵 \(R\),则可以使用
要从 \(T\) 中提取旋转矩阵 \(R\),请使用
要从 \(T\) 中提取平移向量 \(t\),请使用
要从 \(T\) 中提取旋转向量 \(r\),请使用
注意,由于旋转向量到旋转矩阵的映射不是一对一的,因此返回的旋转向量不一定与您之前用于设置矩阵的那个相同。
如果你有两个变换 \(T = T_1 * T_2\),请使用
要获取 \(T\) 的逆变换,请使用
| T cv::Affine3< T >::float_type |
| Matx<float_type, 3, 3> cv::Affine3< T >::Mat3 |
| Matx<float_type, 4, 4> cv::Affine3< T >::Mat4 |
| Vec<float_type, 3> cv::Affine3< T >::Vec3 |
| cv::Affine3< T >::Affine3 | ( | ) |
默认构造函数。表示一个 4x4 单位矩阵。
| cv::Affine3< T >::Affine3 | ( | const Mat4 & | affine | ) |
增广仿射矩阵。
| cv::Affine3< T >::Affine3 | ( | const Mat3 & | R, |
| const Vec3 & | t = Vec3::all(0) ) |
生成的 4x4 矩阵为
\[ \begin{bmatrix} R & t\\ 0 & 1\\ \end{bmatrix} \]
| R | 3x3 旋转矩阵。 |
| t | 3x1 平移向量。 |
| cv::Affine3< T >::Affine3 | ( | const Vec3 & | rvec, |
| const Vec3 & | t = Vec3::all(0) ) |
Rodrigues 向量。
当前矩阵的最后一行设置为 [0,0,0,1]。
| rvec | 3x1 旋转向量。其方向指示旋转轴,长度指示旋转角度(弧度,遵循右手定则)。 |
| t | 3x1 平移向量。 |
|
explicit (显式) |
组合了以上所有构造函数。支持 4x4、3x4、3x3、1x3、3x1 大小的数据矩阵。
当数据不是 4x4 时,当前矩阵的最后一行设置为 [0,0,0,1]。
| data (数据) | 单通道矩阵。当它为 4x4 时,会复制到当前矩阵,t 不使用。当它为 3x4 时,会复制到当前矩阵的 3x4 上半部分,t 不使用。当它为 3x3 时,会复制到当前矩阵的左上角 3x3 部分。当它为 3x1 或 1x3 时,被视为旋转向量,并使用 Rodrigues 公式计算 3x3 旋转矩阵。 |
| t | 3x1 平移向量。仅当数据既不是 4x4 也不是 3x4 时使用。 |
|
explicit (显式) |
从 16 元素数组创建。
| Affine3 cv::Affine3< T >::concatenate | ( | const Affine3< T > & | affine | ) | const |
a.concatenate(affine) 等同于 affine * a;
|
static (静态) |
创建一个 4x4 单位变换。
| Affine3 cv::Affine3< T >::inv | ( | int | method=cv::DECOMP_SVD | ) | const |
| Mat3 cv::Affine3< T >::linear | ( | ) | const |
| void cv::Affine3< T >::linear | ( | const Mat3 & | L | ) |
将 3x3 矩阵 L 复制到当前矩阵的左上角部分
设置矩阵的左上角 3x3 部分。其余部分不受影响。
| L | 3x3 矩阵。 |
| Affine3 cv::Affine3< T >::rotate | ( | const Mat3 & | R | ) | const |
a.rotate(R) 等同于 Affine(R, 0) * a;
| Affine3 cv::Affine3< T >::rotate | ( | const Vec3 & | rvec | ) | const |
a.rotate(rvec) 等同于 Affine(rvec, 0) * a;
| Mat3 cv::Affine3< T >::rotation | ( | ) | const |
| void cv::Affine3< T >::rotation | ( | const Mat & | data (数据) | ) |
组合了以上旋转方法。支持 3x3、1x3、3x1 大小的数据矩阵。
设置矩阵的左上角 3x3 部分。其余部分不受影响。
| data (数据) | 单通道矩阵。当它是 3x3 矩阵时,设置当前矩阵的左上角 3x3 部分。当它是 1x3 或 3x1 矩阵时,用作旋转向量。使用 Rodrigues 公式计算旋转矩阵,并设置当前矩阵的左上角 3x3 部分。 |
| void cv::Affine3< T >::rotation | ( | const Mat3 & | R | ) |
旋转矩阵。
将旋转矩阵复制到当前矩阵的左上角 3x3 部分。当前矩阵的其余元素不受影响。
| R | 3x3 旋转矩阵。 |
| void cv::Affine3< T >::rotation | ( | const Vec3 & | rvec | ) |
Rodrigues 向量。
设置矩阵的左上角 3x3 部分。其余部分不受影响。
| rvec | 3x1 旋转向量。方向指示旋转轴,长度指示旋转角度(弧度,遵循右手定则)。 |
| Vec3 cv::Affine3< T >::rvec | ( | ) | const |
Rodrigues 向量。
rotation(const Vec3& rvec) 设置的那个相同。| Affine3 cv::Affine3< T >::translate | ( | const Vec3 & | t | ) | const |
a.translate(t) 等同于 Affine(E, t) * a,其中 E 是单位矩阵
| Vec3 cv::Affine3< T >::translation | ( | ) | const |
| void cv::Affine3< T >::translation | ( | const Vec3 & | t | ) |
将 t 复制到当前矩阵最后一列的前三个元素
设置矩阵的右上角 3x1 部分。其余部分不受影响。
| t | 3x1 平移向量。 |
| Mat4 cv::Affine3< T >::matrix |