cv::split(undistorted_points_temp, channels); cv::merge(channels, undistorted_mat);中undistorted_points_temp=undistorted_mat?
时间: 2023-07-29 22:08:58 浏览: 78
不是,undistorted_points_temp 和 undistorted_mat 是两个不同的矩阵。
cv::split(undistorted_points_temp, channels) 将 undistorted_points_temp 矩阵拆分成多个通道,存储在名为 channels 的 vector 中,而不是 undistorted_mat。
cv::merge(channels, undistorted_mat) 将 channels 中的通道合并成一个矩阵 undistorted_mat,而不是 undistorted_points_temp。
相关问题
std::vector<cv::Mat> channels(2);
这段代码定义了一个包含两个元素的 `cv::Mat` 类型的向量 `channels`,其中每个元素都是一个矩阵。这个向量通常用于将一个多通道的矩阵分离为多个单通道矩阵,或者将多个单通道矩阵合并为一个多通道矩阵。
在这里,这个向量被用于保存从一个二通道矩阵中分离出来的两个单通道矩阵。在代码中,`channels` 向量的大小为 2,因此可以保存两个单通道矩阵。这两个矩阵分别保存了二通道矩阵中的第一个通道和第二个通道。
需要注意的是,在使用 `cv::split` 函数将一个多通道矩阵分离为多个单通道矩阵时,必须先创建一个向量,用于保存分离后的单通道矩阵。这个向量的大小必须等于多通道矩阵中的通道数,否则会导致程序运行错误。在这里,由于 `undistorted_mat` 矩阵是一个二通道矩阵,因此向量 `channels` 的大小被设置为 2。
// from ground points to undistorted points via R and t // from ground points to camera points
这段注释表示将地面点云信息通过旋转矩阵 `R` 和平移向量 `t` 转换为畸变校正后的相机坐标系下的点云信息。具体来说,这个过程分为两步:
第一步是从地面坐标系下的点云信息转换为相机坐标系下的点云信息。这里可以使用旋转矩阵和平移向量来描述地面坐标系到相机坐标系之间的变换关系,即将地面坐标系下的点云信息转换到相机坐标系下的形式。这一步的结果是得到了相机坐标系下的点云信息,但仍然存在畸变。
第二步是通过畸变校正将相机坐标系下的点云信息转换为畸变校正后的相机坐标系下的点云信息。这里可以使用相机的内参矩阵和畸变系数对相机坐标系下的点云信息进行畸变校正,从而得到畸变校正后的相机坐标系下的点云信息。
经过这两步转换,就可以将地面坐标系下的点云信息转换为畸变校正后的相机坐标系下的点云信息。
阅读全文