opencv--求解Mat矩阵的逆矩阵

opencv中cv::invert()可直接用来求解矩阵的逆矩阵

函数原型如下:

double cv::invert(InputArray  src, OutputArray dst, int  flags = DECOMP_LU )

Parameters:

src: 待求解的矩阵

dst: 输出的逆矩阵

flags: 求解方法


详细介绍:
1、src: 输入,浮点型(32位或者64位)的M×N的矩阵,当参数3的使用方法为DECOMP_CHOLESKY DECOMP_LU DECOMP_EIG时函数功能为求逆,此时需保证M=N(参见参数flag)。

2、dst: 输出,与输入矩阵类型一致的N×M的矩阵。

3、flag:求逆方法,提供4种可选择的方法:
DECOMP_CHOLESKY(基于CHOLESKY分解的方法),
DECOMP_LU(基于LU分解的方法),
DECOMP_EIG(基于特征值分解的方法),
DECOMP_SVD(基于奇异值分解的方法)。

其中,前三种方法要求输入的矩阵必须为方阵,此时计算结果为矩阵的逆;最后一种方法为对非方阵的伪逆计算,对矩阵的形状没有要求。函数接口的默认参数为DECOMP_LU方法(应该是效率较高的一种方法)。

https://blog.csdn.net/weixin_42587961/article/details/97130305

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!关于相机标定,OpenCV是一个非常强大的库,它提供了相机标定的函数,可以用来解决相机的畸变问题。而tbb是Intel开发的一个并行计算库,可以加速OpenCV的一些计算,提高程序的性能。 在使用OpenCV进行相机标定时,可以使用以下函数: ```cpp double calibrateCamera(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, Size imageSize, InputOutputArray cameraMatrix, InputOutputArray distCoeffs, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON)); ``` 其中,objectPoints和imagePoints是分别包含了世界坐标系和相机坐标系下的点的向量,imageSize是图像的大小,cameraMatrix和distCoeffs是输出的相机内参矩阵和畸变系数矩阵,rvecs和tvecs是输出的旋转矩阵和平移矩阵,flags是标定的方式,TermCriteria是停止条件。 如果要加速计算,可以使用tbb库提供的并行计算能力。具体可以参考以下代码: ```cpp cv::setNumThreads(num_threads); //设置OpenCV使用的线程数 cv::parallel_for_(cv::Range(0, num_images), [&](const cv::Range& range) { for (int i = range.start; i < range.end; ++i) { cv::Mat rvec, tvec; cv::solvePnP(object_points_, image_points_[i], camera_matrix_, dist_coeffs_, rvec, tvec); rvecs_[i] = rvec; tvecs_[i] = tvec; } }); ``` 这段代码使用了parallel_for_函数进行并行计算,加速了求解每个图像的旋转矩阵和平移矩阵的过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值