cornerSubpix(imageGray,corners,Size(11,11),size(-1,-1),TermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,30,0.1));报错
时间: 2023-09-04 11:11:52 浏览: 176
`cornerSubpix()` 函数报错可能是因为 OpenCV 版本更新引起的函数参数改变。从 OpenCV 3.0 版本开始,函数参数中的 `CV_TERMCRIT_EPS` 和 `CV_TERMCRIT_ITER` 被改为 `cv::TermCriteria::EPS` 和 `cv::TermCriteria::MAX_ITER`。
如果你使用的是 OpenCV 3.0 及以上版本,可以将代码中的 `CV_TERMCRIT_EPS` 和 `CV_TERMCRIT_ITER` 改为 `cv::TermCriteria::EPS` 和 `cv::TermCriteria::MAX_ITER`。
例如:
```
cv::Mat imageGray;
std::vector<cv::Point2f> corners;
cv::Size winSize(11, 11);
cv::TermCriteria criteria(cv::TermCriteria::EPS + cv::TermCriteria::MAX_ITER, 30, 0.1);
cv::cornerSubPix(imageGray, corners, winSize, cv::Size(-1, -1), criteria);
```
如果你使用的是 OpenCV 2.x 版本,应该使用 `CV_TERMCRIT_ITER` 和 `CV_TERMCRIT_EPS`,例如:
```
cv::Mat imageGray;
std::vector<cv::Point2f> corners;
cv::Size winSize(11, 11);
cv::TermCriteria criteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 30, 0.1);
cv::cornerSubPix(imageGray, corners, winSize, cv::Size(-1, -1), criteria);
```
如果以上方法都不能解决问题,可以尝试检查 OpenCV 版本是否正确安装,以及是否正确链接 OpenCV 库。
阅读全文