std::vector<cv::Mat> channels(2); cv::Mat undistorted_points_temp = cv::Mat::ones(3, rows * cols, CV_64FC1); undistorted_points_temp = K.inv() * undistorted_points; cv::Mat undistorted_mat = cv::Mat::zeros(1, rows * cols, CV_64FC2); cv::s
时间: 2024-04-05 16:35:14 浏览: 150
std::vector<cv::Mat> channels(2);
cv::Mat undistorted_points_temp = cv::Mat::ones(3, rows * cols, CV_64FC1);
undistorted_points_temp = K.inv() * undistorted_points;
cv::Mat undistorted_mat = cv::Mat::zeros(1, rows * cols, CV_64FC2);
cv::split(undistorted_points_temp, channels);
cv::merge(channels, undistorted_mat);
以上代码实现了以下功能:
1. 定义了一个名为 channels 的 cv::Mat 类型的 vector,其大小为 2。
2. 创建了一个 3 行 rows*cols 列的 CV_64FC1 类型的矩阵 undistorted_points_temp,并将其所有元素初始化为 1。
3. 通过 K 的逆矩阵与 undistorted_points 相乘,得到一个新的矩阵 undistorted_points_temp。
4. 创建了一行 rows*cols 列的 CV_64FC2 类型的矩阵 undistorted_mat,并将其所有元素初始化为 0。
5. 将 undistorted_points_temp 矩阵拆分成多个通道,存储在名为 channels 的 vector 中。
6. 将 channels 中的通道合并成一个矩阵 undistorted_mat。
阅读全文