OpenCV实际使用中的笔记记录

内容

  • 1.对Mat类型的变量进行循环输入
  • 2.关于OpenCV 中 cv::Rect R_rect( )的用法
  • 3.关于OpenCV中cv::Point3f的创建
  • 4.Eigen::四元数赋值

1.对Mat类型的变量进行循环输入

关于Mat_和Mat,cv::Mat_类是一个“瘦身”的cv::Mat类。
在大多数情况下,使用cv::Mat就足够了,但是cv::Mat_会更方便在你进行大量元素的访问操作时,且在编译时你已经知道矩阵类型的情况下。

cv::Mat_<double> robot_cur_pose(1,6);
std::vector<double> cur_pose = { 9.69,-13.23,88.72,22.08,79.81,-6.04 };
for (int i = 0; i < 6; i++) {
	// 下面两种方法都可以
	//robot_cur_pose.at(0,i) = cur_pose[i];
	robot_cur_pose(0, i) = cur_pose[i];
}
for (int i = 0; i < 6; i++) {
	std::cout << robot_cur_pose(0, i) << " ";
}

2.关于OpenCV 中 cv::Rect R_rect( )的用法

下面这两行代码中,R_rect(0, 0, 3, 3)不是表示的是矩形的左上角坐标(0, 0),右下角坐标(3, 3)。

cv::Rect R_rect(0, 0, 3, 3);
cv::Rect T_rect(3, 0, 1, 3);

实际表示的是矩形左上角的坐标、矩形的宽度和高度。

cv::Rect rect(x, y, width, height);

3.关于OpenCV中cv::Point3f的创建

目的:对于某些数据类型必须要用cv::Point3f来创建,但头文件中不希望引用opencv库,所以需要知道cv::Point3f是如何创建的,能不能改为C++标准的STL库。

typedef Point3_<int> Point3i;
typedef Point3_<float> Point3f;
typedef Point3_<double> Point3d;

举例①:

cv::Point3f v1(34.0f, 21.34f, 32.0f);

举例②:
https://www.thinbug.com/q/24860611
通过三个double类型的数x, y, z,到了别处使用时用这三个数进行Point3f的创建。

std::vector<cv::Point3f> points;
points.push_back(cv::Point3f(0.44,0.30,0.46));
                                x    y    z

4.Eigen::四元数赋值

Eigen::Matrix4f gnss_of_lidar;
 
...
 
// 有效赋值
Eigen::Matrix3f R=gnss_of_lidar.block(0,0,3,3).matrix();
 
Eigen::Quaternionf q(R);

https://blog.csdn.net/delovsam/article/details/104427530?spm=1001.2014.3001.5502

你可能感兴趣的:(关于Opencv,opencv,笔记,eigen)