You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenCV cornerSubPix无法准确定位角点的技术求助

Charuco板边缘角点cornerSubPix定位失败问题排查

我需要定位图像中一个视觉上清晰可辨的角点,但cornerSubPix算法始终无法准确定位。已尝试调整终止条件、窗口大小、零区域等参数(对零区域的含义不甚了解,相关文档说明较少),仍未解决问题,恳请指导。

当前使用代码

cv::TermCriteria criteria = cv::TermCriteria(cv::TermCriteria::MAX_ITER  | cv::TermCriteria::EPS, 30, 0.1);
cv::cornerSubPix(image_gray, corners, cv::Size(10, 10) /*windows size*/, cv::Size(-1,-1) /*zero zone*/, criteria);

更新说明

该图像来自一个Charuco板,生成参数如下:

  • 行数19、列数24
  • 正方形宽度0.05、标记宽度0.04
  • 字典为5x5_1000,启用legacy_charuco标志

Charuco板生成代码:

cv::aruco::Dictionary dictionary = cv::aruco::getPredefinedDictionary(cv::aruco::DICT_5X5_1000);
cv::Ptr<cv::aruco::CharucoBoard> board = cv::makePtr<cv::aruco::CharucoBoard>(cv::Size(19, 34), 0.05f, 0.04f, dictionary);
board->setLegacyPattern(true);

问题背景与尝试方案

OpenCV自带的Charuco/Aruco检测器无法定位左上角及部分边缘角点(推测因边缘Aruco标记大多被遮挡)。我的解决思路是:

  1. 通过cv::calibrateCamera计算标定矩阵
  2. 重投影已知的Charuco板角点,例如目标角点重投影位置为(141,74),但实际位置为(157,82)
  3. 使用cornerSubPix对重投影位置进行微调,但未得到正确结果

另外也尝试过cv::findChessboardCorners,但该方法对边缘裁剪的图像适配性不佳。

内容的提问来源于stack exchange,提问作者zeellos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 22:48:39