文章目录
- eigen
- Matrix
- 基础
- 例
- 编译时固定尺寸
- 运行指定大小
- OpenCV
- 概述
eigen
Matrix
基础
- 所有矩阵和向量都是Matrix模板类的对象。
- 向量也是矩阵,单行或单列。
- Matrix模板类6个参数,常用就3个参数,其它3个参数有默认值。
Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime>
分别是元素标量类型,编译时行数和列数
-下面定义float类型元素,4*5的矩阵
typedef Matrix<float, 4, 4> Matrix4f;
- 4*1列 向量
typedef Matrix<float, 4, 1> Vector3f;
- 1*2行向量
typedef Matrix<int, 1, 2> RowVector2i;
- 运行时再指定维度
typedef Matrix<double, Dynamic, Dynamic> MatrixXd;
typedef Matrix<int, Dynamic, 1> VectorXi;
//只指定行
Matrix<float, 3, Dynamic>
MatrixXf a(10,15);
VectorXf b(30);
- 初始化元素
Vector2i a(1, 2);
Matrix<int, 5, 1> b {1, 2, 3, 4, 5};
Matrix<int, 1, 5> c = {1, 2, 3, 4, 5};
例
编译时固定尺寸
- Matrix4f
#include <iostream>
#include "f:/learn/eigen-3.4.0/Eigen/Dense"using Eigen::Matrix4f;int main()
{Matrix4f m = Matrix4f::Random();std::cout << m << std::endl;
}
-0.997497 0.170019 0.64568 0.4210030.127171 -0.0402539 0.49321 0.0270699-0.613392 -0.299417 -0.651784 -0.392010.617481 0.791925 0.717887 -0.970031Process returned 0 (0x0) execution time : 0.099 s
Press any key to continue.
- Vector3f
#include <iostream>
#include "f:/learn/eigen-3.4.0/Eigen/Dense"using Eigen::Vector3f;int main()
{Vector3f m = Vector3f::Random();std::cout << m << std::endl;
}
-0.9974970.127171
-0.613392Process returned 0 (0x0) execution time : 0.103 s
Press any key to continue.
- RowVector2i
#include <iostream>
#include "f:/learn/eigen-3.4.0/Eigen/Dense"using Eigen::RowVector2i;int main()
{RowVector2i m = RowVector2i::Random();std::cout << m << std::endl;
}
-16343 2083Process returned 0 (0x0) execution time : 0.091 s
Press any key to continue.
- 指定大小
6*6的矩阵
#include <iostream>
#include "f:/learn/eigen-3.4.0/Eigen/Dense"using Eigen::Matrix;
typedef Matrix<int,6,6> Matrix6i;
int main()
{Matrix6i m = Matrix6i::Random();std::cout << m << std::endl;
}
-16343 -4906 6897 -11557 -16092 -109372083 12974 443 -10948 -4002 5342
-10050 10578 -6423 16007 1037 -161310116 8080 -15893 -1780 2332 -48462785 -10679 -13389 -12482 3334 -14515-660 11761 -4442 -16231 3511 3528Process returned 0 (0x0) execution time : 0.101 s
Press any key to continue.
运行指定大小
- double型元素
#include <iostream>
#include "f:/learn/eigen-3.4.0/Eigen/Dense"using Eigen::MatrixXf;
int main()
{MatrixXf m = MatrixXf::Random(3,3);std::cout << m << std::endl;
}
-0.997497 0.617481 -0.2994170.127171 0.170019 0.791925-0.613392 -0.0402539 0.64568Process returned 0 (0x0) execution time : 0.099 s
Press any key to continue.
- int型元素
#include <iostream>
#include "f:/learn/eigen-3.4.0/Eigen/Dense"using Eigen::MatrixXi;
int main()
{MatrixXi m = MatrixXi::Random(3,3);std::cout << m << std::endl;
}
-16343 10116 -49062083 2785 12974
-10050 -660 10578Process returned 0 (0x0) execution time : 0.098 s
Press any key to continue.
- 指定元素值
#include <iostream>
#include "f:/learn/eigen-3.4.0/Eigen/Dense"using Eigen::Vector2i;
using Eigen::Matrix;
int main()
{Vector2i a(1, 2);Matrix<int, 5, 1> b {1, 2, 3, 4, 5};Matrix<int, 1, 5> c = {1, 2, 3, 4, 5};std::cout << a<< std::endl;std::cout << b<< std::endl;std::cout << c<< std::endl;
}
1
2
1
2
3
4
5
1 2 3 4 5Process returned 0 (0x0) execution time : 0.094 s
Press any key to continue.
OpenCV
概述
- OpenCV(开源计算机视觉库:http://opencv.org)是一个开源库,包含数百种计算机视觉算法。
- 操作均是在windows下,所以从下面链接下载安装包:
https://github.com/opencv/opencv/releases/latest