cv::Mat 矩阵求逆
时间: 2023-09-19 17:06:23 浏览: 93
要对一个 `cv::Mat` 矩阵求逆,可以使用 `cv::invert()` 函数。以下是求逆的示例代码:
```cpp
cv::Mat mat = ...; // 假设有一个需要求逆的矩阵
cv::Mat invMat;
cv::invert(mat, invMat);
```
请注意,`invert()` 函数会返回一个布尔值,表示求逆是否成功。如果返回值为 `false`,则表示矩阵不可逆或计算失败。
相关问题
获取Eigen::Matrix4f 的前3*3 cv::MAT矩阵
如果你想将一个Eigen::Matrix4f类型的矩阵转换成OpenCV中的cv::Mat类型的矩阵,并且只保留前3x3的子矩阵,可以使用cv::Mat的构造函数进行转换。
假设你有一个Eigen::Matrix4f类型的矩阵mat,并且你想将其前3x3的子矩阵转换成cv::Mat类型的矩阵,代码示例如下:
```
Eigen::Matrix4f mat = ...; // 定义一个4x4矩阵
cv::Mat mat_top_left(3, 3, CV_32FC1, mat.block<3,3>(0,0).data()); // 提取前3x3矩阵并转换成cv::Mat类型
```
其中,block<3,3>(0,0)表示从(0,0)位置开始,提取3行3列的子矩阵,即前3x3矩阵。然后,使用cv::Mat的构造函数将Eigen矩阵的数据指针传递给cv::Mat对象,从而实现数据的共享。注意,这里的mat_top_left是一个3x3的CV_32FC1类型的矩阵,与Eigen矩阵共享数据。
cv::Mat::MAt
cv::Mat::Mat是OpenCV中的一个类,用于表示图像或矩阵。它有多个构造函数,可以用不同的方式创建Mat对象。其中最常用的构造函数是:
cv::Mat::Mat(int rows, int cols, int type, const Scalar& s);
这个构造函数创建一个指定大小和类型的矩阵。rows和cols分别指定矩阵的行数和列数,type指定矩阵的数据类型,s指定矩阵的初始值。
例如,下面的代码创建了一个3行4列、数据类型为CV_32FC1(单通道浮点型)的矩阵,并将所有元素初始化为0:
cv::Mat mat(3, 4, CV_32FC1, cv::Scalar(0));