findHomography opencv如何使用
时间: 2023-07-04 10:18:59 浏览: 158
在 OpenCV 中,findHomography 函数可以使用 RANSAC 算法估计两个平面之间的单应性矩阵。该函数需要一些输入参数和输出参数:
输入参数:
- srcPoints:源平面上的点集,类型为 std::vector<cv::Point2f>。
- dstPoints:目标平面上的点集,类型为 std::vector<cv::Point2f>。
- method:指定计算单应性矩阵时所采用的方法,通常为默认值 cv::RANSAC。
- ransacReprojThreshold:RANSAC 算法中的阈值,通常为 3。
- mask:输出的掩码矩阵,如果对应点之间的距离小于阈值,则掩码对应位置为 1,否则为 0。
输出参数:
- H:输出的单应性矩阵,类型为 cv::Mat。
以下是一个示例代码:
```c++
std::vector<cv::Point2f> srcPoints, dstPoints;
// 初始化 srcPoints 和 dstPoints
cv::Mat H;
cv::findHomography(srcPoints, dstPoints, cv::RANSAC, 3, mask);
```
其中,mask 可以用来筛选出符合要求的对应点,例如:
```c++
std::vector<cv::Point2f> inliersSrcPoints, inliersDstPoints;
for (int i = 0; i < mask.rows; i++) {
if (mask.at<uchar>(i)) {
inliersSrcPoints.push_back(srcPoints[i]);
inliersDstPoints.push_back(dstPoints[i]);
}
}
```
这样,inliersSrcPoints 和 inliersDstPoints 中的点就是符合要求的对应点,可以用来进行后续的操作。
阅读全文