如何在opencv中获取矩阵的一部分
How to get a section of a matrix in opencv
我在openCV:中有这个矩阵
cv::Matx44d m;
我想从这个矩阵中得到左上角的3x3矩阵。最简单、最快的方法是什么?
我可以通过以下方式做到这一点:
cv::Matx44d m;
cv::Matx33d o;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
o(i,j)=m(i,j);
}
}
但我正在寻找一种更简单、更快的方法,如果它存在的话!
Matx有一个名为get_minor()的函数,它可以完全执行您想要的操作。我在OpenCV的文档中没有看到它,但它存在于实现中。在您的情况下,它将是:
o = m.get_minor<3,3>(0,0);
模板参数<3,3>是小矩阵的高度和宽度。值(0,0)是裁剪矩阵的起点。
为什么不使用一个简单的构造函数?
Matx44d m = ...;
Mat33xd o( m(0), m(1), m(2),
m(4), m(5), m(6),
m(8), m(9), m(10) );
这个怎么样?
//! creates a matrix header for a part of the bigger matrix
Mat(const Mat& m, const Range& rowRange, const Range& colRange=Range::all());
Mat(const Mat& m, const Rect& roi);
Mat(const Mat& m, const Range* ranges);
所以你可以写:Mat部分=Mat(A,rect);
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- OpenCV - 获取图像的一部分
- 如何在C 中获取.CSV文件的一部分
- 如何在C 中获取文本文件的一部分
- 如何获取字符串的一部分
- 在C++中获取Vector的一部分,类似于指向C数组中间的指针
- 如何在opencv中获取矩阵的一部分
- 如何将xml的一部分获取为字符串
- 如何获取元组的一部分
- 获取std::元组的一部分
- 在特定项之后获取QString的一部分
- 使用窗口标题的一部分获取processID
- 在c++中获取一个类的指针,该类是另一个具有多重继承的类的一部分
- 获取数字的一部分
- 获取文件的一部分
- Getline只获取一部分信息