逆透视
Published in:2024-04-27 | category: 智能车
Words: 534 | Reading time: 2min | reading:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
* @brief IPM初始化
*
* @param origSize 输入原始图像Size
* @param dstSize 输出图像Size
*/
void init(const cv::Size &origSize, const cv::Size &dstSize)
{
// 原始域:分辨率320x240
// The 4-points at the input image
m_origPoints.clear();
// [第二版无带畸变镜头参数]
m_origPoints.push_back(Point2f(0, 214)); // 左下
m_origPoints.push_back(Point2f(319, 214)); // 右下
m_origPoints.push_back(Point2f(192, 0)); // 右上
m_origPoints.push_back(Point2f(128, 0)); // 左上

// 矫正域:分辨率320x240
// The 4-points correspondences in the destination image
m_dstPoints.clear();
m_dstPoints.push_back(Point2f(100, 400)); // 左下
m_dstPoints.push_back(Point2f(220, 400)); // 右下
m_dstPoints.push_back(Point2f(220, 0)); // 右上
m_dstPoints.push_back(Point2f(100, 0)); // 左上

m_origSize = origSize;
m_dstSize = dstSize;
assert(m_origPoints.size() == 4 && m_dstPoints.size() == 4 && "Orig. points and Dst. points must vectors of 4 points");
m_H = getPerspectiveTransform(m_origPoints, m_dstPoints); // 计算变换矩阵 [3x3]
m_H_inv = m_H.inv(); // 求解逆转换矩阵

createMaps();
}
  1. void init(const cv::Size &origSize, const cv::Size &dstSize): 这是一个名为init的函数,它接受两个参数origSizedstSize,这两个参数是OpenCV库中的cv::Size类型,用来表示图像的尺寸。

  2. m_origPoints.clear();: 清空存储原始域点坐标的容器m_origPoints

  3. m_origPoints.push_back(Point2f(0, 214));: 将(0, 214)点坐标添加到原始域的点坐标集合中,代表原始图像的左下角。

  4. 依次类推,将原始域的四个角的点坐标添加到m_origPoints中,依次是左下、右下、右上和左上。

  5. m_dstPoints.clear();: 清空存储矫正域点坐标的容器m_dstPoints

  6. m_dstPoints.push_back(Point2f(100, 400));: 将(100, 400)点坐标添加到矫正域的点坐标集合中,代表矫正图像的左下角。

  7. 依次类推,将矫正域的四个角的点坐标添加到m_dstPoints中,依次是左下、右下、右上和左上。

  8. m_origSize = origSize;m_dstSize = dstSize;: 将原始图像尺寸和目标图像尺寸保存下来。

  9. assert(m_origPoints.size() == 4 && m_dstPoints.size() == 4 && "Orig. points and Dst. points must vectors of 4 points");: 使用assert断言来确保原始域和矫正域的点坐标集合都包含四个点。

  10. m_H = getPerspectiveTransform(m_origPoints, m_dstPoints);: 通过原始域和矫正域的点坐标计算透视变换矩阵m_H

  11. m_H_inv = m_H.inv();: 求解透视变换矩阵m_H的逆矩阵,存储在m_H_inv中。

  12. createMaps();: 调用createMaps函数,创建地图。

Prev:
AuTop代码整理
Next:
数据集标注json转xml脚本