opencv find4QuadCornerSubpix的使用方法
时间: 2024-05-11 20:14:55 浏览: 174
函数find4QuadCornerSubpix是OpenCV中的一个用于亚像素级别的角点检测的函数。它可以对角点进行亚像素级别的定位,提高角点检测的精度。
函数的使用方法如下:
```cpp
void cv::find4QuadCornerSubpix(
cv::InputArray img, // 输入图像,必须是灰度图像
cv::InputOutputArray corners, // 输入输出参数,角点的坐标
cv::Size region_size = cv::Size(-1, -1), // 搜索区域的大小,默认为3x3
cv::Size zero_zone = cv::Size(-1, -1), // 角点中心的区域大小,用于去除噪声,默认为-1x-1
cv::TermCriteria criteria = cv::TermCriteria(cv::TermCriteria::EPS + cv::TermCriteria::MAX_ITER, 30, 0.1) // 停止条件,默认为最大迭代次数为30,最大误差为0.1
)
```
其中,输入参数img必须是灰度图像,角点的坐标保存在输入输出参数corners中,可以通过函数cornerSubPix先对图像进行角点检测再将检测到的角点坐标传递给函数find4QuadCornerSubpix。函数中还可以设置搜索区域的大小、角点中心的区域大小和停止条件等参数。
使用示例:
```cpp
cv::Mat img = cv::imread("test.jpg", cv::IMREAD_GRAYSCALE);
std::vector<cv::Point2f> corners;
cv::goodFeaturesToTrack(img, corners, 100, 0.01, 10);
cv::cornerSubPix(img, corners, cv::Size(5, 5), cv::Size(-1, -1), cv::TermCriteria(cv::TermCriteria::EPS + cv::TermCriteria::MAX_ITER, 30, 0.1));
cv::find4QuadCornerSubpix(img, corners, cv::Size(3, 3), cv::Size(-1, -1), cv::TermCriteria(cv::TermCriteria::EPS + cv::TermCriteria::MAX_ITER, 30, 0.1));
```
上述代码使用函数goodFeaturesToTrack先对图像进行角点检测,然后使用函数cornerSubPix对检测到的角点坐标进行亚像素级别的定位,最后使用函数find4QuadCornerSubpix对角点进行进一步的亚像素级别的定位。
阅读全文